tm
The best games, applications, and utilities ever publislned for
Commodore l^ome computers by COMPUTE! and CGMPUTEI's Gazette.
PUTE!&
$14.95
1988 €£
S20 95 Canada 02707
Oispiav oniii Jon 27, 1988
jisk nsice
For Commodore 64 & 128
StiQlegy "^arneb -
Bootmak
Script
Eaglei
all • Pris(
heck<
^.J» Fast hll l^^--0 ..
ivieiabAbiU
Appi
^^^^^X!^^w^
u *
;a V
Of Our Best
Programs Ever
INSIDE
. ON DISKI
-We
'0s • Tua
• iuroo
tionKi^ '^ Speed
orter • Fc
/■iew • Strateqy Games
0 "7U86"02707'
Off • Heat Seeker • Kicker • Loo.
Quickchange • Saloon ShootOLJ
- r'\/~^i'~:
^i A\ssernbiet
jrictions • '
np • Fontier • Hi-Res Screen D
oBASlc.
Turbo Boot
L,u / .i-^i :u •
iBASIC 128»^'etoi
^nr^Mc^tions ♦
WHEN YOU'VE SOLD
YOU MUST BE DOING
No Brag, Just Fact! Over 1,800,000 programs sold to date— and each
program includes:
• Free Customer Technical Support (For all registered users)
• A Money Back Guarantee (If you can find a better program, we'll buy it for you)**
• A very liberal Upgrade & Exchange Policy (Which means you never have to
worry about obsolete software)**
S.R.P. C64-$49.95
C128-$6g.g5
Word Writer 3 has more fea-
tures, more power, and is
easier-to-use than any other
C64 word processor!
Features:
• An 85,000-Word Spell
Checker— plus, unlimited
sub-dictionaries,
• An Integrated Thesaurus
with over 60,000 synonyms
and alternatives.
• An Integrated Outline
Processor that quickly
organizes notes, facts, and ideas into a convenient out-
line format,
• An 80-Column Print Preview Mode
• Highlighting: Prints out your text incorporating under-
lining, boldface, italic, superscript, subscript, and more.
• Headers and Footers
• Automatic Program Set-Up: Configures WORD
WRITER 3 to your choice of printer codes, screen colors,
and more.
• SwiftKeys* access commands quickly using a minimum
of keystrokes,
• Compatible with GEOS*
PARTNER
64
S.R.P. C64-$49.95
C12B-$59.95
The Critic's Choice
WORD WRITER 3.
DATA MANAGER 2, and
SWIFTCALC INTERFACE
TOGETHER FOR A COM-
PLETE PRODUCTIVFTY
SYSTEM!
pIaNNER is a class act from stan ^^^^^^3,^55
outstanding pMi.=-
-using WORD WRITER is an absolute^^^^^^^^^^
..pARTNERmavbeco-.^-— r.^^
you have . . .Timeworks has ^^^ute-sG^ette
deservedly so. ,, ,se well documented
-DATA MANAGER 2 is easy to use^^^^ ^^^^^^
rj^Ke^i^^^^^^^^^^
businesses.
■Reg. Irademarks of Commodore EleclronJcs, Lid-
Berkeley Software, Inc., Timeworks, Inc.
c 1982 Timeworks. Inc. AN Rights Reserved.
PARTNER 64.
A cartridge-based product
with eight instantly accessi-
ble, memory-res/den( desktop
accessories.
Accessories include:
• Appointment Calendar
& Date Book
• Name, Address, and
Phone List
• Auto Dialer • Memo Pad
• Label Maker & Envelope
Addresser
• Calculator • typewriter
• Screen Print
Other features include:
• SwiftDos: Allows you to access Commodore disk drive
commands any time.
• SwiftLock: Enter your secret code before you leave your
computer. The keyboard will be locked until you re-enter
the code.
• Extended Printer Control: Enables you to send com-
mands directly to your printer at any time.
• SwiftLoad: Allows your Commodore 1541 disk drive to
load as fast as the 1571 disk drive.
Data Manager 2,.
A highly flexible filing and
recordkeeping system that
stores, retrieves, sorts, eval-
uates, and updates large
amounts of information.
Features:
A Report Writer: Gen-
erates customized data
reports. You specify the title,
location, and sequence of
each column.
A Label Maker: Prints
your name and address file
onto standard mailing labels, and transfers and prints
text information onto labels and tags.
Quick Access to important information: Retrieves
and prints items by name, date range, index code— or
any category stored in the system.
* Calculates numerical data from column to col-
umn and field to field: Allows you to perform spread-
sheet tasks such as payroll calculations, cost estimates.
0 Compatible with GE05
S.R.P. C64-S39.95
C128-$69.95
1,800,007 PROGRAMS,
SOmmNG RIGHT.
S.R.P. C64-S4Q.95
C128-S69.95
SYIMA PORTERS
Personal Financial
Planner..
All the computer tools you'll
need to manage your money
on a day-to-day basis, and
plan your financial future,
too!
For Your Day-to-Day
Affairs:
• Maintains your elec-
tronic checkbook and
credit card transactions.
• Writes your checks and balances your checkbook.
• Prepares and monitors your budget
• Classifies and tracks your taxable income and
expenses
• Calculates your net worth and generates cus-
tomized personal financial statements
• l^cks your financial assets-and your insurance
policies.
For Your Rnancial Future:
Leads you step-by-step through a series of questions
regarding your financial goals, and your current financial
condition. Your answers will enable your computer to
determine and print a summary of the amounts you must
save each year to meet your financial objectives-in both
real and inflated dollars.
SwiftCalc
A powerful, easy-to-use elec-
tronic spreadsheet designed
for home and business use.
Features:
Sideways: Prints all your
columns on one, continu-
ous sheet... sideways.
250 rows and 104 col-
umns provide more than
25,000 cells (locations) in
which to place information.
Performs mathematical
functions, up to 12 digits.
Allows the use of minimum and maximum values, aver-
ages, sums, integers, absolute values, and exponential
notation,
• Performs financial analysis functions, calculates
the present and future value of a dollar and the present
and future value of a constant amount (annuity).
' SwiftLoad: Allows your 1541 Disk Drive to load up to 5
times faster.
' Produces "What If?" Reports: Applies mathematical
functions and algebraic formulas to any spreadsheet-type
analysis, such as budgeting, financial planning, or cost
estimating. Calculates these formulas and produces
complicated "What If?" Reports at the press of a key
S.R.P. C64-S39.95
C128-S69.05
Tmeworks Desktop
PUBLISHER,.
Where you once needed
a typesetter, designer, and
paste-up artist, you can do
it all yourself with THE
TIMEWORKS DESKTOP
PUBLISHER. Includes every-
thing you need to produce
professional-quality printed
documents on your C64
S.R.P. $59.95 computer.
Features;
• Automatic Page Style Formatting: Set up a page
style only once. The computer follows it automatically
inserting rules, headers, and footers.
• A Full-Featured Word Processor
• A Wide Variety of Font Styles in Multiple Sizes
• A Built-in Text Editor that allows you to write head-
lines, taglines, and captions to fit any space.
• High Resolution Graphics: Imports illustrations and
graphics from leading
graphic programs.
• Automatic Kerning:
Opens or tightens word
and letter spacing for a
truly professional look,
• A Wide Selection
of Built-in Patterns,
Textures, and Shades
• A Complete Set of
Built-in Drawing Tools:
Draw lines, boxes, circles,
and polygons automatically
—or, draw free hand.
• Use THE TIMEWORKS
DESKTOP PUBLISHER
to produce: Newsletters.
Brochures, Flyers, Forms,
Reports, Bulletins, Menus.
Certificates, Letterheads,
Newspapers— the pos-
sibilities are endless!
Available at your favorite dealer, or contact Timeworks toddy
To Order Call: 1-312-948-9202
For Update Information Call: 1-312-948-9206
kilii'^IIVdW
MORE POWER FOR YOUR DOLLAR
Timeworks, Inc. 444 Lake Cook Road.
Deerfield, Illinois 60015 312-948-9200
"Delails on every Timeworks package
>^k^
^ *^^^
•
Solve • Calculate
T^TJ
Filers
You can do almost anything.
You can do it.
You really can.
These are all of the wonderful
Ihings you can do with your
Commodore 64 or 128 and
Pocket'" 2 Software. This is the
software thai can make you an ace
,n 30 minutes... «*wi/>"Wi«'
„rrer louched a computer before.
The reason? Pocket'" 2
Software is menu driven. It has all
of the help and instructions you
need right on the screen. AH of
the power of your computer IS
nghi there at your fingertips. U s
such an exhilarating feeling, you
might find yourself humming the
theme to 'Rocky'.
Fast, flexible and
affordable.
At Digital Solutions, we're
committed lo making our software
work for you. Naturally, all
Pocket'" 2 software is fully
integrated and GEOS'"
compatible. It's people logical...
notjust machine logical,
All those wt)nderful Ihings
you've hea«l about Pocket"^ 2
Software are tnie. Just wait until
you get your hands on ii.
Digital Superpak" 2
... A super idea
One of the beauties of Pocket'"
2 Software is that all three
programs work beautifully
together. Ntorking together,
they're more powerful and give
you a whole new range of opUons
and possibilities.
Not only that, when you
order Pocket Writer^" 2. Pocket
Planner'" 2 and Pocket Filer'"
bundled together in Digital
Superpak'"2.youcansave
a bundle of money. Just
$99.95 U.S.
Pbcket Writer^" 2
The Award \Vinner
Experts caU Pocket Writer'" 2
the best word processor ever.
With its menu-driven, on-screen
instructions, you'll fly through
letters, presentations, memos,
lists, reports and articles. In fact,
if you need to write it. Pocket
Writer'" 2 will make it easier. You
can formal your words the way
you want them. You can change
vour mind. You can even stay on
iop of your speUing with Spellmg
Checker, Only $59.95 U.S,
Pocket Filer^^ 2... like
a giant file drawer
Pocket Filer'" 2 IS a full-
featured database that will help
you to keep track of just about
anything. No matter what kind of
information you have to store,
pbcket Filer'" 2 will help you to
organize it better, process it m
more ways and retrieve it faster
when you need it.
At home or at the office, now
you can organize information
the way .vow want it. Only
$59.951I.S.
.... Sort
Report
ft)cket Planner'** 2
It figures
Pocket Planner'" 2 is the
answer for number crunchers.
This powerful electronic
spreadsheet is the right tool for
coUecting. stonng. analysing and
reporting information . . financial
or numerical. It's a common-
sense solution lor managing your
checkbook, budget, installment
payments, worksheets or
investment portfolio. Pocket
Planner' " 2 lets you put some real
bite into your number crunching.
Only $59.95 U.S.
•Commodore Manaziw. July 1987
Pocket
ProliMJonal Word P««»«»r^
S«te«1 «»<»-•« iKBT-triw^UW"'
ry
Digital
ProfaH'onal Word Proteitor,
for Iho Commodor
can'llinclPocker
Sri!^----^---'^^"^^^^
CHARGE
CARD #
™m/m
Order your* today.
DigitalSupcrpak'"2.s^.stSW-9.'iU.S.
Ptock.tFi!er"'2a DigiialSupen»k'"2 D IhtalS-
Name:.
DiaHal
Mutioiis
2-30 AAferlheim Court
Richmond HiU. Ontario
Canada UB 1B9
(416) 731-8775
**<^
MPUTE! AND GAZETTE
STRATEGY GAMES
6 Chess John Krause
9 Power Poker Jud Bleser
10 Solitare Ben Bizet
1 1 Sea Route To India M. J. Winter
12 Campaign Manager .... Todd l-ieimarcl(
16 Pool Joseph T. Wjyton
1 7 Bingo 64 Richard L Witcover
18 Sleuth PaulD. Farquhar
20 Switchbox Todd Heimarcl(
23 Hex War Todd Heimarck
ACTION GAMES
22 Q-Bird Mike Sedore
25 Space Gallery Jeff A. Lapkofi
26 Whirlybird Philip I. Nelson
27 Prisonball John Scarborough
28 Quicl<change Kevin Mykytyn
and Mark Tuttie
29 Saloon Shootout David Hensley, Jr
and Mark Tuttie
30 Props Philip /. Nelson
34 Powerball William Chin
35 Laser Beam Mike Greenfield
36 Bagdad Bryan Files
37 Arcade Baseball Kevin Mykytyn
and Mark Tuttie
38 Eagles And Gators Philip I. Nelson
40 Face-Off Kevin Mykytyn
and Mark Tuttie
41 Space Arena Bryan Files
42 Kicker John Krause
and Mark Tuttie
43 Heat Seeker Jetf ]/\tolverton
PROGRAMMING UTILITIES
44 Fast Assembler Yves Han
48 Disk Editor Kevin Mykytyn
50 Fast File Copier Ross Ouwinga
52 Omega Sort Jonathan J Holuta
53 Automatic Syntax Checker
Philip /. Nelson
56 X BASIC Kevin Martin
59 1 28 Editing Functions Jim Allen
61 Archive Philip I Nelson
142 Unicopy Jim Butterfield
GRAPHICS UTILITIES
65 Fontier Tapan Desai
69 Expandable Graphics Dumps
Fred Solmer
70 Hi-Res Screen Dump Gregg Peele
7 1 Sprite Magic Charles Brannon
76 Fast Hi-Res Screen Dump
Robert F Mills
79 Ultrafont+ Charles Brannon
83 Screen-80 Gregg Peele
and Kevin Martin
APPLICATIONS
85 Skyscape Robert M. Simons
87 Number Construction Kit
Gerald W. Rightmer
88 Home Financial Calculator
Patrick Parrish
91 Budget Planner Gregory L Smith
93 Catologer Kevin Mykytyn
94 Mini-Filer Kevin Martin
127 Free-Form Filer David Myles
METABASIC
96 MetaBASIC 64 Kevin Mykytyn
100 MetaBASIC Plus John Brox Shadle
101 MetaBASIC 128 Kevin Mykytyn
SPEEDSCRIPT
103
113
114
116
116
118
125
126
SpeedScript 3.2
Fontmaker
MoilMerge
ScriptSove
SpeedCalc
SpeedView
Sequential File Converter
ScriptRead
Charles Brannon
Charles Brannon
. . Jerry Starling
J Blake Lambert
. . Kevin Martin
Mark Schreiner
. . Ron Carnell
. Buck Childress
THE TURBO SERIES
129 TurboDisk 64 Don Lewis
132 Turbo Bootmaker Bert Rosenberg
133 TurboDisk Relocator Dino Bavaro
134 TurboDisk 128 Don Lewis
136 TurboSave 128 Michael Henry
139 TurboSave 64 William Voosen
140 Turbo Format Ross Ouwinga
Pnblisher
James A. Caurlla
Editoriiil l)im'(or
Richard Mansfield
MiiniiuinK t^dilor
Kaihtccn Maninek
A'isiK'iHlt' I'ubliihfr
Sclb> Baieman
Pruducliiin Dirtvliir
Tonv Robcns
Fdiwt. COMPllKIand
coMPn t:;\ gazkii k
Lance Flko
Ediliw. C-OMPn Ers AUm
S ) Disk & MBgazini' and
CDMPlIK's K MaBiwiiK
Tom R. Hallhill
Milof, COMPl [K's Apple
ApplicHlions Mift'l'ii>c
Cirtgg Ki'i/cr
Fmtures Kdilur
Keiih Ferrcll
Technical Kditor
Otiis R Cowper
As^isianl Tvchnimt Fidiliirs
Dale McBane. Jim Fucht
Assi^IunI Kdilnrs
Todd Hcimarck, Rhcii
\nderion, John Shadle. Rand\
Thompson. Clill" Karnes
PruEtamniinB Superiisor
[■ainck Pamsh
Edilurial ProKrammers
Tim Victor, Tim MidkilT.
William Chin. GcorBc Miller
Bu>Fr''> tiuidv Conrdinaliir
Caroline Hanlon
Copy KdiriitN
Karen l.'hiendorf, Karen
Sicpak. Jill Champion
Submis'tiun-i RetieHer
DaMd Henslcv
PrnRniniminit As^i^lanl■•
Trov Tucker. Jovce Sides
E\vculi>L' Assi\lanl
Dcbi Nash
Adminixirslix' A%*ii'iranls
Julia Fleming. Ins Brooks,
Svbil Agcc
Recepliiinj<il
Aniia 'Xrmlleld
CX)MPl rK!\ BiHik Di.Uion
tidllor
Stephen Lev J
AwiisunI Uiton
Tammic Taylor. Robert Bivh\.
L>nnc Weatherman
Program mi nK AsxiMant
David Rorancc
Diri-clor of Naiionul Sales
Joseph W. Hatcher
Production Manajt^r Irmu Swam
An Director Janice R, Far>
ASHStant \ri Dirtiior Lee Noel, Jr
Assbuni Production Manaiter [X' Putter
Aldm Rubin Case, Kim Poiiv Scolly
Billings. Tony Jacobson
TyprscliinR Tern Cash. Carole Dunlon
llluMnilur H;irr) Blair
Director nf AdierlisInK Sales
Adiertisint: Director
Prod ucl kin Ciiordinalor
Peter Johnsmevcr
Bernard J, Theobald. Jr.
Kathleen Kanlon
CusinmtT Senke ManaKtr Diane Longo
Dealer Sales Supenisor Jose Cru/
lndi>idual Order Supervisor Cassandra Crrcen
James A. Casclla. ['resident
Rkbard Mansncld. Vice Presideni, Editorial Director
Richud J Marino. Vice Prcsidcnl. Advcnismg Sales
llcnc Bcrson Weiner, Vice President, Production
Kdilorial Board
Richard Mansfield. Kathleen Mariinek, Sclbv Baieman, Unce
Elko. Tom R. Halfhill. Stephen Lcv>
Robert l.iK-k, Founder and Edilonal Consultant
Editorial ofTiees:
Corporate oflicc*:
Cuslomer Seniee:
Dnler Saks:
3; J West \Kendover Avenue
Suite 1(X>
Greensboro. NC 27408 USA
825 7th Avenue
New York, NY tOOI9
212.265-S360
BOO-346-6767 (in NY 212-88T-8525)
10:00 AM-I2;30PM:
1:3(1 PM-3:00 PM Monday-Friday
800-638-3822 (In NY 212-887-8566)
9 AM-5 PM Mondav-Fndav
Adti-nisinK Sales Representatives
Nen England & Ntid Atlantic
BiTnard Theobald. Thomas Link: 212-31S-166S
MidHesI & SoulhHesI
Jerry Thompson, Lucille Dennis: .112-726-6047 (Chicagol.
71.3-731-2605 (Texas). .*03-5'J5-')299 (Colorado). 415-348-8222
(California)
Vi'est. NarthMcsl & British Columbia
Jerry Thompson. Lucille Dennis: 415- .348-8222
SoulheasI A Inlernalional
HarT\ Blair 91V-275-mw
Send all advertising matcnals to.
Kaihleen Hanlon
324 West Wendovcr Ave.. Suite 200
Greensboro. NC 27408
Editor's Notes
Since its first issue in 1979, COM-
PUTE! has published programs for
Commodore computers. Back then,
the PET— grandfather of the VIC,
64, and 128 — was the reigning
Commodore machine. In the years
since, we've continued to offer some
of the finest software for Commo-
dore computers available anywhere.
Collected here, in this special
issue, is the best of COMPUTE! and
GAZETTE — our best games, best
programming utilities, best graph-
ics utilities, and best applications
programs. You'll find SpeedScript,
an exceptional word processor;
"Campaign Manager," an engaging
simulation of the presidential elec-
tion campaign; "Laser Beam," a
fast-paced game that really tests
your joystick prowess; "Meta-
BASIC," a powerful BASIC-lan-
guage extension that makes
programming much easier; and
dozens more.
Using The Programs
We recommend that you copy the
programs from the enclosed disk to
working disks before you run them.
Then store the original disk safely
away as a backup. You can use the
"Unicopy" utility on the disk to
quickly back up all the files.
When originally published,
these programs were provided as
printed listings that had to be typed
into the computer before they could
be used. In this collection, the pro-
grams are packed onto both sides of
a 5 'A -inch disk, ready to be loaded
and used.
Most of these programs work
on the Commodore 64 and on the
Commodore 128 running in 64
mode. Several, however, are writ-
ten specifically to take advantage of
the 128's special features. These
programs are labeled with the char-
acters 128 on the program disk.
In general, you'll find the pro-
gram names identical to the article
titles. View the disk directory by
entering
LOAD "$",8
and then LIST. If you don't see the
file you're looking for, turn the disk
over and repeat the process on the
other side.
In most cases, there's nothing
more to do but load and run the
program, but do read the article
that accompanies each program for
specific loading instructions and an
explanation of all the program's
features.
We know you'll enjoy these
programs. Readers of COMPUTE!
and GAZETTE have been using
them — and telling us how much
they like them — for years.
COMPUTEI Publications, Inc.
Part ot ABC ConturrMr hlagiailnet, Irtc.
OtM of tha ABC PublliNng Companl**
ABC PuDiiiTiing. Prgs«]ent. Robert G Burton
1330 Avenue ot the Amedcos. ^4ew Vortt. New Voiv 10019
Best of COMPUTEI and Gizetir for Commodore 64
and 128 IS published bv COMPUTEr Puhlicaiions, Inc.,
B25 7th Ave.. Neiv York. NY 10019 USA. Phone: (212)
265-8360. Editorial Ofiite^ are located at 324 West
Wendover Avenue, Greensboro, NC 27408. Entire con-
tents copy right JOI987 by COMPUTE! PuWicationi, he.
.All rights reserved
s^^
«yoo«Ji
Bring your Commodore^ to life
with a FREE modem and software!
Now you can plug your Commodore into an exclusive
network that's useful, easy, fun and inexpensive. Join
Q-Link now and we'll give you a free modem and
software to get you started.
Enjoy unlimited access to a wide range of Q-Link
"Basic" services for a set fee of only $9.95 a month.
Get help from Commodore experts — use the Hotline
to ask Commodore questions, or search the database
of information from Commodore to answer your
questions on the spot. Access Grolier's Academic
American Encyclopedia'", the latest news and enter-
tainment updates.
Special Q-Link "Plus" sen/ices let you expand your
software library with more than 10,000 public
domain programs — games, graphics, business and
educational software and much more! Also, you can
preview new copyrighted software before you buy.
Getanswerstoyoursoftwarequestions from Berkeley
Softworks, Electronic Arts and Activision, to name a
few. Participate in fulI<olor, multi-player games like
Casino (includes Blackjack, Poker, Bingo and the
Slots), Chess and Bridge. "Plus" services cost only an
extra 6 cents per minute — and your first hour of
"Plus" service usage each month is free!
Offer valid in ihe coniinental U.S. and Canada for new members only. Expires 6/30/88.
PfiCM subjea to change wilhoul notice. There ts a commun«ations wjrtharge for
conrwclion to 0-Link from Canada: 6 cents (U.S.) per minule from Montreal.
Vancouver. Ottawa. Toronto. Quebec. Windsor, Krtchetiei and Calgary using the
Tymnet network, and 15 cents (U.S.) per minute from over 85 other locations uiir>g
the DATAPAC network
Conunodor* n t ifgisIHH) ludemaik ot CommodO'* tlKlFOriKi. Lid 0-Linli a * Wfv«»m*k o'
Quantum Computet S«rvicn, IrK Groi^r't AfMlen^ir ArrifrKan Encytlopedu it i v»dt"\Mik o* Grol^r
£l«ctron»< Publi%hina
With Q-Link, you can sharpen your computer
skills . . . connect with people . . . discover new ways to
get smart . . . save money every day . . . plus have a lot
of fun!
No-risk guarantee. Try Q-Link without risk. If, at
any time, for any reason, you are not completely
satisfied, you may cancel your membership.
Order your Q-Link software and modem today by
mailing this coupon to Q-Link, 8619 \Afestwood
Center Drive, Vienna, VA 22180 or for faster service
call toll-free: 1-800-782-2278 Ext. 1207
I Q-UNK RESERVATION FORM
Choose one:
□ I need a modem. Start my Q-Link membership by charging me now for
my firrt 4 months at S39.80, and send me the FREE O-Lmk software and a
FREE Ccxnmcxtore 300 baud aiiti>dial modem (model 1660— retail value S69.95),
□ I already have a modem. Send me my FREE 0-Lir>k software and start
my 0-Liok membership by charging me now for my first month of
membership at $9.95.
Full name
Address ,
City
(hooPO. Bonn)
State
Home phone
Choose your method of payment:
Please charge my credit card.
; Master Card i Visa
Zip
u Ched( enclosed.
A(cW
Ev.
Signature
Call toll-free 1-800-783-2278 Ext. 1207 or
mail this coupon to;
Q-Link, 8619 Westwood Cer^ter Dnve,
Vienna. VA 22180
The Commodore Connection,
Try to outwit your computer with this
fast, multilevel chess game for the 64.
A joystick is required.
The world was amazed, in the late
eighteenth century, by a machine
that had the astonishing ability to
play a good game of chess. It enter-
tained kings and queens. It defeat-
ed Napoleon, a master tactician.
Hundreds of people paid to com-
pete against it, but eventually it was
revealed that a small man was hid-
den inside the machine.
A chess-playing machine re-
mained only a dream until the late
1950s when the first computer
chess game was played. Now, the
World Computer Championship,
held every three years since 1974,
attracts almost as much publicity as
the human championship matches.
Why has there been so much inter-
est in machines that play games?
One reason is that chess can be
used to measure a computer's intel-
ligence. Chess is easy to play, but
difficult to master. So difficult, in
fact, that some experts believe that
a computer would have to be al-
most as intelligent as a human to
become world champion.
Of course, another reason is
that chess is just plain fun, but not if
you can't find an opponent. To be
an entertaining opponent, a com-
puter chess game should be fast,
easy to use, and capable of playing
at several different skill levels.
"Chess" has all these features and
more. Although it's really no match
against the best commercial chess
games, it has managed to defeat
these giants of the microcomputer
chess world on rare occasions.
Joystick Input
The program is found in two parts
on the disk. To start the game, enter
Ctiess
John Krause
LOAD "CHESS",8 and then RUN.
The first program will automatical-
ly load the second (CHESS2) at the
appropriate time. Both files must be
present for Chess to work. After
running the program, you will be
asked to specify several play op-
tions. You can choose among five
skill levels; start a new game or set
up any position; play against the
computer or watch it play against
itself; or play either the white or
black pieces. All of these options
will be discussed in greater detail
later, but for now, type 1 at each
prompt. This puts you in command
of the white pieces versus the com-
puter on level one^ the easiest level.
The first time the program is
run, you need to wait a few seconds
while the computer gets its brain in
order. Then the board will be dis-
played with your pieces on the bot-
tom of the screen and the computer's
pieces on the top. You should see a
frame around the square in the low-
er-left comer of the board (the VIC
version uses a blinking square).
This is the cursor which takes the
place of your hand to move pieces
around the board.
Use the joystick (plugged into
port 2) to move the cursor atop the
piece you wish to move. Press and
release the joystick button. Now
move the cursor to the square you
want to move to and tap the button
again. Your piece moves to the new
square, and the computer responds
almost instantly with its move.
A Spectacular Blunder
Did you make a foolish move? No
problem. One of the most valuable
features of Chess is the ability to
change the position by adding or
deleting pieces. This feature is espe-
cially useful for those of us who
frequently manage to maneuver
into a superior position, only to
throw it all away in a single, spec-
tacular blunder.
A piece can be deleted by posi-
tioning the cursor on the piece and
pressing the space bar. To add a
piece or change a piece to a differ-
ent one, move the cursor to the
appropriate square and press P, N,
B, R, Q, or K for pawn, knight,
bishop, rook, queen, or king, re-
spectively. This will put one of your
pieces on the square. To add one of
the computer's pieces, hold down
the SHIFT key while pressing one
of these editing keys.
To take back a move, use the
editing keys to delete your piece
and put it back on its original
square. Don't forget to take back
the computer's move, too.
The editing feature also en-
ables you to make special moves
which cannot be made with the
joystick alone such as castling and
en passant captures. For example,
castling can be accomplished by de-
leting the king and putting it on its
new square, and then moving the
rook as you normally would with
the joystick. Although you can
make these special moves, the com-
puter will never castle or capture en
passant because, due to their com-
plexity, these moves were not in-
cluded in its thinking routine.
Strange Chess
Although the computer will always
make a legal move, it doesn't check
to see that you do the same. You are
free to move any of your pieces to
any square without so much as a
contemptuous buzz from the com-
puter. If you're an experienced
player, this shouldn't be a problem.
If you're a beginner, however, you
may want to familiarize yourself
with the basic rules of chess lest
you end up playing strange chess, a
personal version which bears little
6 Best of COMPUTE I and Gazette
How Chess Thinks
You've probably heard that if a monkey sat down at a typewriter and
pecked randomly at the keys for a long enough period of time, it would
eventually type the complete works of Shakespeare. Theoretically, this is
indeed possible — given enough time. There's the rub. At a brisk typing
speed of 50 words per minute, it would take that poor monkey billions of
years just to type "To be, or not to be." Nevertheless, there is power in trial
and error.
The Minimax Algorithm
Substitute the monkey with a high-speed computer, and this technique
becomes a practical method of imitating intelligence. In fact, it has been
used with great success in the field of artificial intelligence. This program
uses a popular trial-and-error technique known as the minimax algorithm.
The computer looks at the present board position and mentally moves
the pieces through all the possible combinations of future moves and
countermoves up to a certain point, say three moves ahead. For each
combination, it calculates a score based on which pieces were captured
during the combination. Each piece is worth a certain number of points
depending on its general importance: 1 point for a pawm, 3 for a knight or
bishop, 5 for a rook, 9 for a queen, and 46 for a king. (Of course, since you
lose the game if your king cannot escape capture, the value of a king is ac-
tually infinite, but 46 is high enough to convince the computer that it's a
bad move.)
When, in a move being examined, the computer captures an oppo-
nent's piece, the value of that piece is added to the score. Conversely,
when one of the computer's pieces is captured, its value is subtracted from
the score. Thus, a high score is considered good for the computer, and a
low score is good for its opponent.
The task is to find the combination that represents best play for both
sides. This combinafion is not necessarily the one with the maximum
score, because while the computer is trying to maximize the score, its
opponent is trying just as hard to minimize it. The best combination gives
maximum scores during the computer's moves, and minimum scores
during the opponent's moves.
After the best combination has been found, the computer's best move
in the present position is simply the first move in the combinafion. The
problem has been reduced from analyzing a chess position to finding the
maximum and minimum of a series of numbers, which is much better
suited to a computer.
50 Miliion Combinations On Levei 5
Like most algorithms based on trial and error, this one requires siffing
through an enormous number of combinations to find the best one.
Fortunately, a few tricks can be used to reduce the combinafions to a
manageable number. This algorithm uses a technique called alpha-beta
cutoff. It makes the. computer search more intelligently, giving it the
seemingly paradoxical ability to find the best move without looking at all
the possible combinafions. On level 5, for example, instead of having to
search through roughly 2 billion combinations, it looks at only 50 million.
Even so, it would take BASIC from now fill 1986 to generate that
many combinations. That's why the algorithm is programmed in machine
language. An advanced programming technique knowm as recursion (making
a subroutine call itself) is used to generate all the possible combinations of
moves. Capable of analyzing about 5000 combinations per second, this
roufine provides a moderate challenge at a reasonable playing speed.
resemblance to the real game. On
the other hand, if you like to fudge
a bit, the computer will make it
easy. It will politely acquiesce to
your most surreal moves.
When a pawn reaches the oth-
er side of the board, it's automati-
cally promoted to a queen. If you
would rather have a knight, bishop,
or rook, you can easily make the
change using the editing keys.
Checlcmate
The computer thinks by analyzing
thousands of possible moves and
countermoves and choosing what it
considers to be the best move based
on the relative value of the pieces
(see "How Chess Thinks"). Most po-
sitions don't have just one best move
but several which are equally good,
in which case the computer chooses
among them at random. This ran-
dom factor insures that every game
vni\ be different, and makes for var-
ied and interesting play.
Play confinues until one side is
either checkmated or stalemated.
The computer will then stop play
and indicate which side has won.
There are a few quirks in the
way the computer determines
whether checkmate has occurred.
On levels three through five, it an-
nounces checkmate prematurely.
When this happens, the computer
has determined that it's impossible
to avoid checkmate on the next
move or two, assuming both sides
make the best moves.
Also, the computer doesn't
know the subtle difference between
checkmate and stalematg. Conse-
quenfiy, when stalemate occurs, it
will announce checkmate although,
in fact, the game is a draw. Since
the computer tries as hard as it can
to checkmate its opponent, it will
also try to achieve stalemate, possi-
bly forcing a draw when it could
have won. Fortunately, this rarely
happens because the conditions for
stalemate exist only in unusual cir-
cumstances such as when one side
has only the king remaining.
Also, the computer won't give
you any hint when your king is in
check (not checkmate). So be extra
careful that you don't leave your
king in check or move into check.
Otherwise, your king would be in
check during the computer's turn to
move — a highly unorthodox if not
illegal position. The computer's re-
ply to such a position is unpredict-
able, but it usually announces
checkmate, forcing you to restart
the game.
In any case, when the com-
puter announces checkmate, press
the joysfick button to start a new
game. If you want to try out some of
the other play options without
waiting till checkmate, you can start
Best of COMPUTE! ond Gazette 7
a new game at any time by pressing
RUN/STOP-RESTORE and run-
ning the program again.
Play Options
When you choose the black pieces,
the board will revolve so that you
still play from the bottom. Since the
player with the white pieces always
moves first, you must wait for the
computer to move before you will
be allowed to make your first move.
If you become mentally ex-
hausted after several bouts against
the computer, give your brain a rest
and watch the computer play itself.
When you select this option, just set
the joystick aside and sit back and
watch the action. Beginners will
find this feature an excellent way to
learn some good strategies to use
against the computer.
You don 't have to begin a
game from the starting position. If
you choose the option to set up a
position, an empty board will be
displayed and you can use the edit-
ing keys to place pieces on the
board in any position. When the
position is set up, the computer will
start thinking after you make your
first move.
This feature is especially useful
for continuing a previous game or
creating a problem for the computer
to solve. It also allows you to experi-
ment with hypothetical or down-
right ridiculous positions. Live out
your fantasy by giving yourself ten
queens versus the computer's lone
king. The position doesn't even
have to be a legal one. You could
invent your own type of chess by
giving each side two kings, for ex-
ample, although the computer may
get confused trying to determine
when checkmate has occurred.
One of the advantages of a
computer opponent over a human
is that you can tell the computer
exactly how hard you want it to try
to beat you, and it will obediently
play at that level of difficulty. This
is important because it's no fun if
you always lose or always win
effortlessly.
You have five skill levels to
choose from. The difference be-
tween one level and another is the
number of moves ahead that the
computer looks. On level 1, for ex-
ample, it looks two moves ahead
(its move and your reply). Each suc-
ceeding level looks ahead one more
EXPERIENCE THE THRILL OF GAMBLING
with VEGAS GAMBLER and VEGAS CRAPS, the sensational
new releases from California Dreams.
Feel the excitement of your favorite games with VEGAS
GAMBLER'S slots, blackjack, poker, and roulette.
Place your bets and throw the dice with VEGAS CRAPS, a
true to life simulation of a casino craps table.
Play for fun or to sharpen your gambling skills.
Be a winner! Pick up your copies today!
.t^^r
""""^
iDriSanM™
ti» nasarwd
' Loycal Design '
) Momagus Expwy.. Suiie 403
I JoM. CA 95131 U.S.A. (406) 43S-t44S
EUROPE tOenmJ'M 022« 97fi2
CAUFORNIA
M now lot C 64,-12S and
ST (cotof ^ mono)
I lor IBM PC, A()f]ta II. MKl >
move than the previous level.
Alas, the smarter play on the
higher levels doesn't come without
a price. The further ahead the com-
puter looks, the more moves it must
examine and, hence, the longer it
thinks. The thinking time varies
greatly depending on the level
(about one second per move on lev-
el 1; about two hours on level 5).
Here's a rundown of the five
levels:
Level 1: Beginner. Thinking time;
one second. Look ahead: two
moves. Fast but dumb.
Level 2: Intermediate. Thinking
time: five seconds. Look ahead:
three moves. Provides a reasonable
challenge for impatient players.
Level 3: Tournament. Thinking
time: two minutes. Look ahead:
four moves. Since the usual time
limit for tournament play is 40
moves in two hours, an average of
three minutes per move, this level
is best suited for serious players.
Level 4: Mate in two. Thinking
time: 30 minutes. Look ahead: five
moves. Capable of solving most
male-in-two problems.
Level 5: Postal chess. Thinking
time: two hours. Look ahead: six
moves. Simulates postal chess
games where there is no time limit.
Can avoid checkmate in two moves.
The thinking times given here
are average times. The actual time
ranges from half to twice the aver-
age time depending on the position.
Level 4 can be used to solve
mate-in-two problems such as those
published in many newspapers, just
select the following options: level 4,
set up position, computer versus it'
self. Enter the position using the edit-
ing keys, and then make a do-
nothing move by positioning the
cursor over a white piece and press-
ing the joystick button twice. After
several minutes of deep thought, the
computer should respond by moving
one of the white pieces (the solution)
and announcing checkmate. The
only mate-in-two problems that the
computer cannot solve are those
which involve castling, en passant
captures, or pawn promotion. ®
8 Best of COMPUTE! and Gazette
Power Poker
This is one of the most addictive
games we've ever published. It adds a
new dimension to the traditional
game of poker, and is fun for one
player or in competition with friends.
For the Commodore 64.
Poker is a game that's just as popu-
lar today as it was a century ago.
Even though there's always a ran-
dom element at play, it usually re-
quires careful thought and a
knowledge of probability. The vari-
ations created by the cards you're
dealt and how you arrange them
makes poker unpredictable. "Pow-
er Poker," written for the Commo-
dore 64, adds a new twist to the
game — rather, another dimension.
A Double Purpose
Think of this game as two-dimen-
sional poker. You play on a five-by-
five grid and try to make the hands
that gain the most points. Each card
serves two hands, so placement
must be done carefully. (If you're
new to poker, see "Poker Hands.")
When you run the program,
you'll see a table of the number of
points awarded for each kind of
hand. After a pause of a few sec-
onds, you're ready to begin. A five-
by-five grid is displayed, each
position identified by a letter A-Y.
The computer randomly se-
lects a card and displays it. Place it
in the grid by pressing the appro-
priate letter. After the card is
placed, a new one is chosen and
displayed, and so on, unhl all 25
cards have been placed. Choose
Jud Bleser
your moves carefully, and remem-
ber; There are 52 cards in the deck,
but you'll only have 25 to play
with. The goal is to make the most
points possible. Scoring is based on
the hands you build. After a col-
umn or row is completed, points are
totaled and added immediately to
your score. (High score is displayed
at all times on the screen also.)
Here are the values for each
hand:
Hand
Points
Royal flush
Straight flush
Four of a kind
400
300
160
Straight
Full house
120
100
Three of a kind
60
Flush
50
Two pair
One pair
30
10
To remember the value of each
hand, you can press fl at any time
during the game to see the table of
values. Press it again to resume
play. Poker players may notice that
some of the hands are out of order.
Normally, a flush would be much
higher on the list. But remember
that you're drawing 25 cards and
the odds for getting two or three
flushes are very high. Higher point
values have been given to hands
that are less likely to occur.
Hands do not need to be in
sequential order. For example, "5,6,
4,7,8" is a valid straight. However,
"roll-over" or "round the comer"
straights such as "3,2,A,K,Q" are
not allowed. Straights using an ace
as low (A,2,3,4,5) or high (10,J,
Q,K,A) are acceptable.
If you're playing Power Poker on a
black-and-white TV, change the
value of variable TV from 1 to 0 in
line 100.
Poker Hands
If you've never played poker, it's very easy to learn. There are 52 cards, di-
vided into four sets {or suits) of 13. The suits are hearts, clubs, spades, and
diamonds, and each suit consists of cards numbered 2-10 with a jack,
queen, king, and ace. The object is to make one of the following hands
(examples are in parentheses):
Royal flush: 10,J,K,Q,A— all of the same suit
Straight flush: a sequence of five of the same suit (9,10,J,Q,K — all
diamonds)
Four of a kind: four of the same value (2,2,2,2)
Straight: five in sequence (4,5,6,7,8)
Full house: three of a kind plus a pair (10,10,10,4,4)
Three of a kind: three of the same value (9,9,9)
Flush: five of the same suit (2,K,8,A,5 — all clubs)
Two pair: two groups of two, each of the same value {A,A,6,6)
One pair: two of the same value (10,10)
Best of COMPUTEI and Gazette 9
Program Construction
Initialization
Print High Score
Print Score
Call Screen #2
Shuffle/Grid Set-Up
Came Play Routine
Test for Completed Row
Test for Completed Column
Game End Routine
Data Collection - Row
Data Collection - Column
Data Evaluation
Print/Flash Poker Hand
Data: Redefined Characters
Data: Cards/Suits
Data: Screen Location Table
Data: ML Routines
Line # Function
100-380
390-420
430-460
470-490
500-550
560-650
660-670
680-690
700-780
790-890
900-990
1000-1120
1130-1150
1160-1290
1300-1310
1320-1340
1350-1730
Variables
A$ "{16 DOWN}"
B$ "{1 DOWN} {27 RIGHT}"
C$ poker hand scored
CA card (Jl)
CK shuffle check
CO color
CS total value of row/column
E box used
H box selected
HS high score
K same kind
L same suit
NH new high score
P card to flash
R straight
SC score
SM screen memory
SU suit 02)
TV color or b/w television
Machine Language Routines
49166
49180
49194
49297
49396
49422
49449
49502
While Background
Clear Card
Grid Set Up
Draw Card
Flash Off
Flash On
Save Color
Restore Color
SOLiTAIRE
Ben Elizer
Looking for something different to do
with your computer? Like the conven-
tional game of solitaire, this comput-
erized version requires you to think
ahead at all times.
"Solitaire" is an electronic version
of the familiar card game. Like the
original, this game challenges you
to put a deck of cards in order using
the fewest possible moves.
Unstiuffling Ttie Decic
As you probably know. Solitaire
has a very simple object. After shuf-
fling a deck of playing cards, you
must put them back in order, fol-
lowing a few simple rules. Though
there are several different varia-
tions of the conventional game,
here are the rules for this version:
When you run the program,
the computer deals out four rows of
13 cards, then removes the aces,
leaving four empty spaces. Your
goal is to rearrange the cards into
four rows of the same suit, putting
the cards in each row in ascending
order from the lowest (2) to the
highest (king), without leaving any
empty spaces between cards. That
sounds simple enough. But since
you must move a card into one of
the four empty spaces, your choices
for any given move are limited.
Your position on the screen is
shown by a blinking cursor. Press
the M key to move from the current
position to another empty space.
When you press P, the computer
moves a card into the current space:
Which card it puts there depends
on which card is immediately to the
left of the space. Whenever possi-
ble, the computer uses the next card
in suit. For example, if the card to
the left of your current position is
the 2 of hearts, pressing P puts the 3
of hearts in the current space and
puts a space where the 3 of hearts
was before. If you press P on a
space to the right of the queen of
diamonds, the king of diamonds
moves from its current position to
that space, and so on. Each time
you press P, one space is filled and
another is emptied.
in this way you can gradually
move cards into the right order.
When you press P on a space at the
beginning of a row, the computer
asks which suit to play (hearts,
clubs, spades, or diamonds). This
determines the suit for that row.
While it's possible to win on only
one deal, most games require two or
more deals. When no moves are
possible (every empty space is fol-
lowed by a king or another space),
the computer automatically shuffles
the remaining cards and deals them
out again. Of course, it does not
disturb cards that are already in cor-
rect order. You'll find that it takes
considerable foresight to win consis-
tently in only two or three deals.
Completely random play results in
an average of nine or ten deals. Q
Sea Route to India
A Historical Simuiation
For Tl-ie 64
Here's your chance to make history on
the "Sea Route to India." Following in
the wake of Portuguese explorers, you
can find gold and adventure, if you
don't starve, or get sunk by pirates, or
capsize in a terrible storm.
One of the earliest games for PET
computers was Westward Ho, in
which the player becomes a tum-
of- the -century pioneer, trying to
cross the country in a covered wag-
on. Decisions must be made about
purchasing food, supplies, and am-
munition. Various experiences —
hunting, Indian attacks, settle-
ments— occur on each leg of the
journey. By repeatedly playing the
game, the user leams where to
spend money, how to hunt, and
whether to trust strangers. Luck,
however, is a major factor in suc-
cess. PET users of all ages played
the game over and over until they
finally reached the West Coast.
Westward Ho was an abbreviat-
ed version of Oregon Trail, in which
the game's designers took pains to
produce an accurate simulation.
They used prices from contempo-
rary catalogs, and calculated fre-
quencies and likely locations of
Indian attacks by studying histori-
cal accounts. The result was a game
that was both interesting and infor-
mative.
Soil Ttie Bounding Main
"Sea Route To India" uses a similar
technique, drawing on the voyages
made by Portuguese explorers in
the fifteenth century.
The subroutine beginning at
line 15000 introduces the game and
gives you the rules.
Your goal is to sail from Lisbon
around Africa to India. During the
M. J- Winter
voyage, you encounter the same
dangers faced by the real explorers:
hunger, thirst, pirates, natives,
weather, mutiny, and attack by
Arab traders.
Your journey is charted in
weeks on a map displayed on the
screen. Lines 500-800 contain the
loop for each week. The miles you
sail depend on the weather. Each
week your store of water, food, and
supplies decreases by one unit. If
your voyage lasts more than 30
weeks, the crew's happiness also
decreases by 1.
Each week you have a new
experience; line 560 sends the pro-
gram to the appropriate event. In
the early part of the voyage, you
sight whales and other ships, and
sail into terrible storms. But after
you pass the Cape of Good Hope
and pick up your Indian pilot, you
might be attacked at any time by
Arab dhows.
Check Your Progress
Every Weeic
At the end of each week, the pro-
gram assesses your situation. If you
sailed far enough to visit the Ca-
nary or Cape Verde Islands, then
your water, food, supplies, and
crew happiness are restored. The
ship's log is updated, and the game
map shows your progress. Lines
91-93 define DT$ (dots); three
characters are needed for each dot.
One dot on the map represents 200
miles (line 1002). Then, if there
have been no fatal shortages, the
voyage continues for another week.
Your ship "sails" across the
screen in line 15155. In the race
(lines 3093, 3096), the ships are
placed at the right of the screen and
a string of DELETEs is printed sev-
eral times. (If you win the race, the
crew is happier; they become dis-
gruntled by a loss.)
Lines 1000-1250 contain the
whale hunting routine. The whales
are within a long string (F$) of shift-
ed spaces, which are cyclically rear-
ranged (line 1210) and the leftmost
40 characters printed each time. The
program checks the keyboard, then
moves the whales until you press H,
which drops the harpoon. The pro-
gram then alternately moves the
whales and lowers the harpoon.
To check whether the harpoon
hits a whale, the screen is opened
for INPUT (line 1100). The entire
row of the screen to the right of the
harpoon is input. If the first charac-
ter is not a shifted space, a whale
has been hit.
Landfall To
Gattier Supplies
The subroutine beginning at line
4000 describes the sighting of a river
mouth. Landing offers you a chance
to get food and water, and to cheer
up the crew. Sometimes (line 4060)
natives appear. As many early ex-
plorers discovered, they are unpre-
dictable. Sometimes they are
friendly and trade gold for trinkets
(cheering up the crew); sometimes
they attack.
If they attack, you must type
RUN and press RETURN quickly.
The clock is set to 0 in line 4320, to
time how fast you typed in RUN.
After you press RETURN, the pro-
gram looks at the clock. If more than
200 jiffies have passed (line 4340),
the natives attack and kill you.
The same timing technique is
used when the Arab dhows attack.
The Arabs are fiercely determined
to protect their trading routes.
Vasco da Gama himself was nearly
trapped by them more than once.
Best of COMPUTE! and Gazette 1 1
Campaign
Manager
This two-player national election
simulation ranks as one of the best
games we've published. With the
right strategy, your candidate can
make it to the White House. For the
Commodore 64.
The Democratic delegates are gath-
ered in Moscone Center, wearing
straw hats, carrying balloons and
signs. The floor fights are done. The
time has come to nominate.
"Maryland?"
"Mister Chairman — the great
state of Maryland, The Free State,
Home of the World Champion Bal-
timore Orioles, casts all of its votes
for the senator from Arizona."
The chairman pounds his gavel.
The din of cheers and jeers subsides.
The convention is deadlocked. And
you control a large block of uncom-
mitted delegates. It's all up to you.
The vice president from Rhode
Island has good charisma and intel-
ligence, but you know his health is
poor. The reverend from Arkansas is
attractive, but a bit conservative. Al-
though the senator from Arizona is
experienced, he's not very smart.
Perhaps the New Jersey doctor? No,
the Ohio senator has the best combi-
nation of personality and issues,
plus you'll get a home region advan-
tage in the populous Heartland.
Now it's the Republican's turn.
Of the five choices, the woman
from South Carolina is the best all-
around candidate. She has high
charisma and fundraising appeal,
which translates well into televi-
sion ads.
It's time to hit the campaign
trail.
Todd Heimarck
The Democratic senator starts
with $9 million and 59 health
points. He rests two days (to build
up his health), then spends two
days fundraising. Campaign stops
in Illinois and Texas sway the vot-
ers slightly to the Democratic side.
The Republican campaigns in
her home state of South Carolina.
She then moves on to North Caroli-
na, Virginia, and Florida, followed
by a couple of days resting.
As the campaign progresses,
the Democrat concentrates on per-
sonal appearances in the industrial
northeast, plus forays into the larger
states such as Texas, California, and
Florida. The Republican candidate
does less actual compaigning, pre-
ferring to spend more time on fund-
raising to pay for the (expensive)
television ads.
In the crucial eighth week,
both candidates rest and fundraise
in prepration for the last minute
campaigning. The Democrat does a
media blitz in the Pacific, Southern,
and Aflantic states. The Republican
hits the Heartland, Arklatex, and
the Urban Northeast.
Initial returns from New Eng-
land show the Republicans sweep-
ing the region, but the large states
of New York and Pennsylvania
went Democratic. The Republicans
won most states from Ohio to the
Great Plains, but the Democrats
picked up the Southern Atlantic
states (except Florida). Texas voted
for the GOP, while the rest of the
region went Democratic. The Rocky
Mountain States were solid Repub-
lican. The Democrats won the Pa-
cific States.
The final results show the Re-
publicans winning six of nine re-
gions and capturing the presidency,
with 315 electoral votes to the
Democrats' 223. Three of the four
biggest states voted Democratic,
but Ohio and Illinois (with 47 elec-
toral votes between them) made the
difference. The TV ads in the last
week moved these two key states
into the Republican camp.
Nine-Week Campaign
Written entirely in machine lan-
guage, "Campaign Manager" pits
you against an opponent. Each of
you manages the campaign of your
candidate. The player who makes
the right decisions gets his or her
candidate elected.
You have nine weeks to cam-
paign. Each week you plan your
moves and enter them via the menu
on the itinerary. You have two de-
fensive moves, resting and fund-
raising, and two ways to gain votes,
campaigning (personal appear-
ances) and advertising on
television.
At the beginning of each turn
you see a medium-resolution map
of the U.S. which indicates which
way each state is leaning. The MAP
option allows you to move a cursor
around the country, to identify
which states are which. If the Re-
publicans are ahead, the state is
red. Democratic states are cyan
(light blue). If you're using a black
and white television, the Republi-
can states are the darker ones. You
may notice that states occasionally
switch back and forth, even though
neither candidate campaigned or
advertised there. This indicates that
1 2 Best of COMPUTE! and Gazette
the voters in that state are split
down the middle, and because of
slight errors in polling, seem to be
leaning one way or the other.
Since you only have 63 days
{nine weeks of seven days), you
have enough time to campaign in
each state once or twice. But in
terms of electoral votes, California
(with 47) is far more important than
some of the smaller (three vote)
states like North Dakota or Vermont.
Generally, it makes more sense
to campaign more heavily in the ten
biggest states, sometimes called
"megastates".
State Electoral Votes
CA
47
NY
36
TX
29
PA
25
IL
2ft
OH
23
FL
21
MI
20
NJ
16
NC
13
Winning the election requires
270 electoral votes {of a possible
538). The ten biggest states account
for 254, just 16 short of a majority.
At the beginning of the cam-
paign, each state has a large pool of
undecided voters. As the game pro-
gresses, they make up their minds
and the pool diminishes. It's possi-
ble, but unlikely, for all of the
state's voters to decide before the
end of the campaign. You would
have to go to the state at least eight
times before the undecided points
were used up.
Each state has a built-in bias
toward one party, based on past
elections for president, senator,
governor, etc. The District of Co-
lumbia, for example, is staunchly
Democratic, so the Democratic can-
didate will automatically get seven
campaign points there, compared
to a Republican's two.
Since the Republicans have
won three of the last four elections
(including a landslide victory in
1972), you might expect them to
begin the game with a huge advan-
tage. But if you look at non-presi-
dential elections, you will find a lot
of states that elect Democratic gov-
ernors, senators, and representa-
tives and then vote for a Republican
president. And a lot of those basi-
cally Democratic states were split
by third-party campaigns (Wallace
in '68, Anderson in '80).
To even things up, and make
the game more playable, the Demo-
crats begin with an electoral vote
advantage of 282 to 256, although
four of the megastates (PA, OH, FL,
and NC) are barely leaning to the
Democratic side. The Republicans
have the advantage of beginning
with 29 of the 51 states (since DC
has three electoral votes, it counts
as a state). Most of the states west of
the Mississippi are Republican, while
the Democrats have most of the
industrial Northeast and the South.
In addition to the natural polit-
ical leanings, each state believes
certain things about five general
issues:
1) unemployment/inflation,
2) poverty /crime,
3) agriculture,
4) education, and
5) defense.
(The issues are based on cen-
sus reports, almanacs, etc.) A very
urban state might be conservative
on crime, but not care much about
agriculture, for example. Each can-
didate has certain stands on these
issues. When you campaign or ad-
vertise in a state, you can get up to
three extra campaign points for
each issue, if you agree with the
citizens there.
Finally, the candidate you
choose has a campaign effective-
ness rating based on charisma and
intelligence. This factor translates
to votes each time you campaign in
a state.
To start the game, choose
which party will go first. You might
want to flip a coin, the winner
choosing either a party or to go first
or second. In testing, we found that
the second player has the very
slight advantage of making the last
move. Next, decide if one of you
will start out as the campaign man-
ager for the president running for a
second term. Being incumbent
gives you some extra campaigning
strength, and is not recommended
if you want an even game.
Note that all choices can be
made with a joystick in either port.
Move the pointer to a menu item
and press the fire button twice to
make your choice. If you don't own
a joystick, use I, J, K, and L for up,
left, down, and right respectively.
Press M in place of the fire button.
Players then pick which candi-
date will represent their party. Five
randomly chosen candidates are
available. To the right of the candi-
date's stats is the YES/NO counter.
Before making your choice, pick
NO for each possibility until you
have seen all five. They will cycle
around again so you can make your
choice.
The heart of the game is the
actual campaign, but in some ways
the convention is more important.
Nominate a terrible candidate and
you'll spend most of your campaign
trying to catch up.
A candidate's personality
greatly affects the outcome of the
election. In the lower left corner
you'll see a list of five attributes,
each associated with a number
from one (worst) to eight (best).
With a couple of exceptions, the
ideal candidate is the one with
straight eights.
First is charisma (CHAR),
which is personal magnetism, pa-
nache, the ability to influence and
excite people. This is the most im-
portant personality trait because it
is part of both campaign effective-
ness and advertising effectiveness.
Stamina (STAM) rates your
candidate's health. A candidate
with low stamina will have to rest
frequently to regain health and
strength.
Intelligence (INTL) adds points
to campaign effectiveness and last
minute campaigning.
Experience (EXPR) helps you
with fundraising. If your candidate
has lots of experience, he or she has
more contacts and connections for
raising money. Since experience
comes with age, it counts against
your health, although stamina
counts for more health points.
Appeal (APPL) also contrib-
utes to fundraising appeals. But if
you have maximum appeal (eight)
you may be tainted by your affili-
ations with special interest groups,
and there is a backlash when you
advertise. It's best to have an ap-
peal of six or seven.
The candidates' attributes are
generated by adding three random
numbers, so candidates are more
likely to have a middle number
(four or five) than one of the
extremes.
Best of COMPUTE! and Gazette 13
The personality traits translate
into these five campaign factors;
Campaign Effectiveness
(CHAR*2 + INTL): the key factor
in campaign stops.
Strength/Health (STAM*4 +
9 - EXPR): determines the effec-
tiveness of a rest day.
Fundraising Appeal (EXPR*3
+ APPL): determines hov^f much
money can be raised in a day.
TV Ads (APPL OR 8 +
CHAR): translates into votes when
advertising.
Last Minute Campaigning
(INTL + STAM): wins last-minute
votes to your side after the ninth
week.
The significance of each factor
is discussed later.
Campaign Issues
Next to the personality factors are
the candidate's stands on various
issues. You see five issues, each
with a sliding scale of one (at the far
left, representing liberal) to six
(conservative). A Republican who
wants to get tough on crime, for
example, will have a rank of six. A
Democrat who wants to solve the
unemployment problem will have a
rating of one.
Candidates will range from
two to five on the issues of agricul-
ture and education. On the other
three issues, the Democrats will
have stands from one to four; the
Republicans will go from three to
six.
You will generally get more
votes with middle of the road be-
liefs. Look for a candidate with
twos or threes if you're the Demo-
crat. Fours and fives are best for the
Republican. The exception is agri-
culture and education, where you
do best with a three or a four.
Common sense tells you which
issues are important in most states.
Agriculture is a major issue in the
farming states. Your stand on de-
fense makes a difference in states
with a lot of military-related
industry.
The candidate's personality is
generally more crucial than the
stands on issues. If you have a lot of
charisma, intelligence, and appeal,
it doesn't matter that you may have
radical views on one or two issues.
If you have five very bad can-
didates, press RUN/STOP-RE-
STORE and try again. It's not much
fun to run a campaign you are des-
tined to lose.
After the nominees have been
chosen, the first week begins. You
may notice that some states have
changed colors. That's because each
nominee gets the equivalent of cam-
paigning once in each state. Some
people make up their minds before
the campaign even starts. If one can-
didate is much more charismatic, or
happens to hit the right issues, a
state may jump over to his or her
side. In addition, each gets a home
state and home region advantage.
You should develop a strategy.
If your appeal and charisma are
strong, concentrate on television
ads. If your candidate has a strong
anti-crime stance, visit the more ur-
ban states. At the very least, you
should plan to visit each of the
megastates.
You begin in your home state
where it is traditional to campaign
once (but not twice). And the first
week usually means some fundrais-
ing and resting as purely defensive
moves.
Under the week's itinerary are
two numbers representing money
and health. At the beginning of
each week, your treasurer tells you
how much money you have, up to a
maximum of $25 million. Your per-
sonal physician figures out how
healthy you are. At most you'll
have 255 health points.
If you fall below $4 million any
time during the week, television
advertising will be useless until you
replenish the campaign coffers. If
you have less than one million, you
won't be able to pay the pollster
(the bar graph to the left of the map
will disappear). When your bank
account falls to zero, the campaign
is paralyzed until you sponsor a
fundraiser. You can't even afford to
pay your doctor or staff.
It takes time away from cam-
paigning, but you have to raise
money once in a while. Each fund-
raising point (experience times
three plus appeal) is worth
$200,000.
Campaigning takes a lot out of
you, so you have to occasionally
take a day to rest and relax. When
you decide to catch some Zs, the
itinerary will be filled with (you
guessed it) Zs. Each day of rest adds
double your strength factor, plus
campaign effectiveness, plus the
number of states you are winning to
the health you have. A high cam-
paign effectiveness gives you opti-
mism; you rest better. If you're
behind, you lose sleep worrying
about it. Resting two days in a row
gets you 16 extra health points.
There are two reasons to keep
your health up. First, when you
campaign in a state, you get an
extra campaign point for every 32
health points you possess. Second,
if your health falls below eight you
look haggard and stutter; cam-
paigning does you no good.
The treasurer counts dollars,
the doctor counts your health, and
your pollster counts votes.
The pollster does three things.
First, you get a bar chart that shows
how many electoral votes would go
to the Democrats and Republicans
if the election were held at that
time. You can see it to the left of the
map. The gray bar marked U repre-
sents undecided states too close to
call. Second you have a map of the
U.S. to show you, at a glance,
which way each state is leaning.
Republican states are red; Demo-
cratic states are blue. These first two
services are part of the pollster's
contract, and cost you nothing. Of
course, if your money drops lower
than one million, you have to stop
paying the pollster; all you get is
the map.
The third service is the most
important — regional polls. To get a
poll of all states in a region, move to
POLL on the main menu and press
the fire button twice. You'll see a
bar chart showing which way each
state in the region is leaning, from
one (half a character wide) to four
(two characters). The poll reflects
the political situation at the begin-
ning of the week; whatever cam-
paigning you have planned for the
week is not included. A state with a
thin bar can usually be taken with a
single campaign stop.
Don't use polls in the first cou-
ple of weeks because most states
start out fairly even and you won't
learn much. But polling can be a
powerful tool towards the end of
14 Best of COMPUTE! and Gazette
the game. If New York is firmly
committed to you, forget about fur-
ther efforts in that state. And if you
find a whole region weakly sup-
porting your opponent, you can hit
them with TV ads and score a few
dozen electoral votes.
Regional polls cost $100,000
and are not available if you begin
the week with less than $1 million.
The final character (although
transparent) in your entourage is
the jet pilot. Your jet can carry you
on short hops within a region for
almost nothing. But if you travel to
a new region, you shell out
$100,000 for fuel, maintenance, etc.
As long as you're in a region, you
might as well stay there a few days
to avoid a lot of travel expenses.
Again, you don't actually move to a
new region until you have cam-
paigned in one of the states. You
can use the travel option to conduct
regional polls; you'll pay $100,000
for the poll, and another $100,000 if
you decide to campaign in a region.
If you travel to a region to poll and
decide not to campaign, you won't
be charged for traveling.
Benjamin Franklin once said
that after three days, guests and fish
begin to smell. The same principle
applies to campaigning.
Campaign once and you gain
some votes. Stay for a second day
and the voters of a state are flat-
tered; you gain a couple of bonus
votes. But stick around for a third or
fourth day and you have over-
stayed your welcome. Do not cam-
paign in a state more than two days
in a row.
Voter Points
Each state begins with 255 undecid-
ed voter points. Your main goal is to
use campaigning and television ad-
vertising to sway the undecided.
And you have to maintain your
health and money.
The effects of a personal ap-
pearance can vary. You get up to
three points for each issue (if the
state agrees with you), one point for
every 32 health points, and up to 24
for your campaign effectiveness {in-
telligence plus double charisma),
and a two point bonus if it's your
second day in the state.
If your money is down to zero,
you get no campaign points. If your
health is below eight, you get a
single vote.
Each campaign stop decreases
your health and money. It's possi-
ble to run out in the middle of the
week, making each succeeding visit
ineffective until you rest or raise
money. Let's say you go to Con-
necticut and impress 23 of the 255
undecideds. The pool of available
voters is reduced by that number.
Half of 23 (11 points) is charged
against your health. Half again (5
points) times $ 1 00,000 is subtracted
from your money. In addition, each
state has some people who don't
agree with you, so a quarter of your
total (five points) goes to your op-
ponent as a reaction against your
speech. If you had previously been
in a different region, travel ex-
penses of $100,000 are subtracted.
Television advertising is a little
different. It affects every state in the
region, and quickly swings voters to
your side. To advertise, first travel
to the region and make at least one
campaign stop to establish your
presence. You can then place the
cursor on TV ADS and press the fire
button twice. After campaigning
once, advertise as much as you like.
Unlike resting and campaign-
ing, the effects of advertising do not
accumulate from day to day. If you
advertise two days in a row, you
don't get bonus points. Advertising
does grow in strength from week to
week, however, and will be more
effective towards the end of the
campaign.
If you flood the region with
ads, it's possible to bring a whole
section of the country to your side.
But it is costly. In each state, adver-
tising credits you with half your
campaign effectiveness, half your
TV ads effectiveness rating, points
for issues, plus two times the week
number (in week seven, for ex-
ample, you get 14 extra campaign
points).
The cost is the usual one-
fourth of campaign points gained,
plus double the TV ads' effective-
ness. The large regions can cost a
lot. Going on TV in the Atlantic
States (all nine) or in the rocky
Mountains (eight) can deplete your
treasury.
On the day you plan to adver-
tise, you must have at least four
million dollars. If you don't, you
waste the day and gather no new
votes. So, if you begin the week
with $5 million, and campaign in
six states, it's Hkely you'll have less
than $4 million by Saturday. Your
ad campaign will do you no good.
There is one more item you can
choose: RECONSIDER. If you make
a mistake, this option wipes your
itinerary clean so you can start the
week anew. Your choices are not
permanent until you fill out the
seventh day and press the fire but-
ton. (If you pull down on the joy-
stick, your slate will be wiped
clean — a quicker way to reconsider.)
Last-Ditch Efforts
The ninth week is usually the most
hectic. If you sponsored some fund-
raisers in week eight, you will want
to spend a lot on TV advertising in
the regions where you have a
chance. Polls can tell you which
states are most vulnerable.
After both candidates have fin-
ished their last week of campaign-
ing, a couple of things happen. The
last region to be visited by a candi-
date gives a few extra votes to him
or her. And the last-week routine
goes into action, as all the undecid-
ed voters make up their minds.
Each candidate gets his or her last-
minute campaigning points (intelli-
gence plus stamina) added to each
state in the country. The undecided
voters are split between the candi-
dates and ties are resolved (based
on the built-in bias to one party or
the other).
The map is drawn for the final
time. The final bar chart appears to
the left (which should indicate at a
glance which candidate won). Be-
ginning with region one (New Eng-
land), the electoral votes are
displayed, with region totals below.
The winner is the candidate
with the most electoral votes. There
is a slight chance that there will be a
tie, in which case you'd have to flip
a coin. If you want to play again,
press RUN/STOP-RESTORE and
type RUN.
Here are a few rules of etti-
quette which help to make a fairer
game.
First, if you're playing with
two joysticks, try to avoid interfer-
ing with your opponent's choices.
Remember, the joystick routine
Best of COMPUTE! and Gazette 15
reads both joysticks.
Second, when you have filled
out your itinerary and the prompt
PRESS FIRE BUTTON TO CON-
TINUE appears, let your opponent
study what moves you made, and
he or she can then press the fire
button.
Third, since polls cost money,
they should be kept private. When
the other player is taking a poll,
avoid looking at the screen.
Main Menu
Command Summary
CAMPAIGN — allows you to make
a personal appearance in one of the
states of the region you're visiting.
Results depend on campaign effec-
tiveness, built-in party bias of the
state, health, and issues. Does not
work if you have zero health or
money, or if all undecided voters
have been claimed. Gains votes,
costs health and money.
TV ADS — blankets the region
with advertising. Reduces health
and costs a lot of money, but can
quickly deliver a big chunk of votes.
Net votes based on TV advertising
effectiveness, campaign effective-
ness, and issues. Does not work if
you have less than $4 million.
FUNDRAISE — raises money
for your campaign based on fund-
raising ability. Takes a day, gains
no votes, costs nothing.
REST — builds up your health
points, according to strength factor.
Extra points if you rest two days in
a row. Gains no new votes, costs
nothing.
MAP — moves the cursor
around the map, prints the state
name, electoral votes, and region
number. For information only,
costs nothing.
POLL — provides a bar graph
showing which way the states in
the region are leaning. Costs
$100,000 (immediately). Not avail-
able if money falls below $1
million.
RECONSIDER— erases the
week's itinerary if you make a
mistake.
TRAVEL — takes you to a new
region of the country. Costs
$100,000 (not charged to you until
you actually campaign there). ®
Pool
Joseph T. V\/oyton
Version by Kevin Mykytyn
Chalk up your cue stick and sharpen
your skills with this exciting simula-
tion of pocket billiards. For one or two
players.
The rules of "Pool" are simple —
you try to sink the billiard balls on
the table by aiming and shooting
the white cue ball.
To play Pool, load it from disk
using a secondary address of 1:
LOAD "POOL",8,l. SYS 49152
starts the program.
The title screen comes up first,
with a ragtime melody playing in
the background. You choose a one-
or two-player game. The screen
clears and the pool table appears.
At the start of the game, the
white cue ball is at one end of the
table and six balls are arranged at
the other end. There are six (rather
than 15) because only eight sprites
are available on the 64. Using the
joystick, position the cue ball in the
"kitchen," behind the scratch line.
When you're ready to shoot, press
the joystick button once. A cross-
hair appears on top of the cue ball.
Move the crosshair in the di-
rection you want to shoot. Pressing
the joystick button starts the cue
ball rolling.
The distance between the cue
ball and crosshair determines the
strength of the shot. The farther
away, the harder the shot. There is
a limit on how far you can move the
crosshair (approximately two-
thirds the length of the table). On
the initial break, you'll probably
want to shoot hard. On later turns,
the strength of the shot will deter-
mine how far the cue ball travels
after a collision. Strategic soft shots
can help you set up the table for the
next shot.
The goal in the one player
game is to clear the table in the
fewest number of shots (the record
here at COMPUTE! Publications is
eight). When all balls are in the
pockets, you're ranked according to
your ability, from Pro (the best) to
Pool Shark, Amateur, and Novice.
In the two-player game, you
try to outshoot your opponent.
When you sink a ball, it's placed on
your side of the screen. With six
balls in play, tie games are possible.
A scratch occurs when you
knock the cue ball into a pocket, or
when the cue ball doesn't hit any-
thing before coming to a stop. You
lose your turn, one of the balls to
your credit is put back on the table,
and the cue ball is placed in the
starting position. Your opponent
can then put the cue ball anywhere
behind the scratch line.
Pool does not completely follow
the laws of physics, although it offers
a realistic simulation. The sprites are
moved pixel by pixel, but the move-
ment is calculated in 256ths of a pixel
for inaeased accuracy. ®
16 Best of COMPUTE! and Gazette
Bingo 64
Richard L. Witkover
"Bingo 64" is a cleverly written com-
puter version of the classic game. It
makes good use of the 64's graphics
and sound capabilities to provide you
and three friends with many exciting
games of bingo. A joystick is required.
Few people have not known the
anticipation, heard the click of the
balls, the call of the number, and
finally, the excited shout of "Bin-
go!" Here's a four-player version of
this world-famous game written for
the Commodore 64.
Setting Up The Game
Before you begin playing, you have
to choose your mode of play from a
menu. Manual ball feed allows you
to control the pace of the game, if
you opt for auto ball feed, the com-
puter automatically picks the next
number. Choose manual cover if
you want to cover the spots on your
card yourself (using the joystick). If
you want your 64 to cover the
spots, pick auto cover.
After you make your choices,
four blank cards are displayed on
the screen. Each column on a card
corresponds to one letter of the
word BINGO. The five numbers in
each column are selected from 15
possible values and are checked to
prevent duplication. This process is
repeated for all four cards. The se-
lected numbers are displayed on
the cards and stored in the three-
dimensional array C%. A cover
token is then placed over the free
box in the center, giving it the status
of a called number.
Ready To Play
The cards are on the screen, and
you are ready to begin playing. At
the bottom of the screen are five
balls (sprites), each labeled with a
letter in the word BINGO.
Numbers are selected through
a random graphics routine. The let-
tered balls jump up and down like
kernels of popcorn. The height a
ball reaches is random. If it jumps
above a line on the screen, it is
selected. If not, it falls back with a
plop, and another ball is given a
chance.
After the column letter has
been selected, a random number is
chosen. To prevent duplication, all
called numbers are entered in the
two-dimensional array N%. The
newly selected number is compared
to the numbers in the array. If a
match occurs, the number is dis-
carded and another one generated.
When a unique number is found, it
is printed on the enlarged sprite in
the middle of the screen, along with
its letter.
Checicing For A Match
Next, each number in the appropri-
ate column on each card is checked
for a match. A chime sound signi-
fies a match. If the number doesn't
appear on any of the four cards, a
sour bong sounds.
If you selected auto cover, the
computer covers a matched number
by printing it as a red reversed char-
acter. If you chose manual cover,
you must use the joystick to position
the marker and press the fire button
to cover your number. If you make a
mistake, you lose the number.
When a number is covered, the
program checks the row, column,
and diagonal for a bingo. Since the
covered numbers have been print-
ed in reversed character mode, this
is easily done from screen memory.
The program needs to check the
five boxes to see if they all contain
reversed characters (screen codes
greater than 127). If a winner is
found, the covers change color and
music plays. Each card is checked
for the possibility of multiple
winners.
One Machine
Language Routine
The first DATA line contains a
short machine language routine
which initializes screen color and
sprite memory locations. The re-
maining DATA statements set up
sprite data and music. The program
contains extensive REMarks to
make the logic flow easier to follow,
and the variable names are listed
below, with their functions.
Variable Function
Al-4 Parameters of pattern for
winner scan
AU Mode flag for ball feed and
cover
BO Bingo flag
B0,1 Digits under joystick cursor
Ck Card numbers array
CC,CM Joystick cursor position
CD Card number
CL Column number
CO% Ball color array
DU% Duration of notes array
FB Fire button switch
FH%,FL% Music frequency high and
low bytes
FR Joystick row number
HB High byte of screen color
memory
JO-3 Joystick direction switches
L Ball letter array
LN Length of ball number string
N% Called number array
NC Ball color index
NM Called number
NN No-Number match flag
NU Value of called number with-
in column (1-15)
Nl,2 Digits of called number
OB Reversed number flag (logical
variable)
PD Joystick memory register
contents
PI Screen memory location of
Nl
RN Row number on card
S Start of screen memory for
cards
SD% Sprite data array
SN Screen memory location of
box digit
SS Sound chip memory location;
also, screen -to-color memory
offset
V Video chip memory location
W1,WJ Indices of box to be checked
for winner
WM Memory location of box to be
checked for winner
SP Contents of WM
X Ball X-position array
Y Ball Y-position array
YM Maximum ball height
Z Present box numh>er value Q
Best of COMPUTEI and Gazette 17
This intriguing game challenges your
problem-solving abilities. A crime has
been committed, and you must ques-
tion suspects to discover who's re-
sponsible. What makes things difficult
is that one of the suspects has prob-
lems telling the truth. And what gives
the game added appeal is that it's
different every time you play.
When you were invited to a small
dinner party at Lord Crumbly's se-
cluded mansion, you never thought
you'd be accused of murder. In ad-
dition to yourself, there were three
other guests and two servants. You
knew his lordship was not a well-
liked man, but you were certainly
not expecting murder.
Late that evening, while you
were alone in the library, a shot
broke the silence. You rushed to the
room of Lord Crumbly and discov-
ered his lifeless body. A moment
later, the others arrived to see you
bending over the dead man. The
police were summoned, but have
not yet arrived. As the prime sus-
pect, you must quickly discover the
murderer or risk being accused of
the crime.
The murder can be solved by
questioning the suspects and keep-
ing track of who said what about
whom. But, to complicate matters,
you know that one of them is a
compulsive liar.
Sifting Through
The Evidence
Three questions must be answered
affirmatively before you make an
accusation. First, did the suspect
have a motive — a reason to dislike
Lord Crumbly? Second, did the sus-
pect have access to a gun? Third,
where was he or she when the shot
was fired — with someone else, near
Crumbly's room, or somewhere
unknown?
Sleuth
Paul D. Farquhor
Version by Kevin Mykytyn
Your task is to narrow down
the list of suspects until you find
someone who had a motive, a
weapon, and an opportunity. Obvi-
ously, if Professor Bard had no gun,
he must be innocent. You may find
more than one person who had mo-
tive or opportunity, but only one
will fit all three categories.
Four of the five will always tell
the truth, while one will always fib.
The liar is not necessarily the mur-
derer, although it is possible. How
do you distinguish between the
true and false statements?
At first, you don't know who's
trustworthy, so don't believe any-
one. Just write down what they say
on the program's a four-page note-
book. You can look at your note-
book by pressing one of the function
keys. The fl key is the first page, f3
is the second, f5 is page 3, and (7
page 4. You may find it convenient
to split up motive, weapon, and op-
portunity on the first three pages
and use the fourth for your conclu-
sions. After selecting a page, type in
the message you want. You can also
flip between the pages of the note-
book by pressing the other function
keys. To get back to the game, press
the back arrow {the upper-left char-
acter on the keyboard).
When someone says some-
thing, write it down on one of the
first three sheets. For example, if
Snipe says Larue was being black-
mailed by Lord Crumbly, write it
under Mofive. If Bard says Chauncy
was with someone when the shots
were fired, write it under Opportu-
nity (Bard says Chauncy had no
opportunity).
Paring Down The List
Of Suspects
Who's telling the truth?
If Snipe tells you that Whig-
gins did not have a gun, and Larue
says the same thing, you can con-
clude that both Snipe and Larue are
truth tellers. Since there's only one
liar, if Snipe or Larue was a liar, the
other would have to be telling the
truth, and they would say opposite
things. But they said the same
thing, so they must both be telling
the truth. Once you know they're
OK, you know everything they
have said (and everything they may
say in the future) will be correct.
By similar logic, if two suspects
say contradictory things, you know
one of them is lying. Bard says Snipe
hated Lord Crumbly (a motive), but
Chauncy says Snipe had no motive.
Either Chauncy or Bard is not telling
the truth, and since there's only one
liar, Whiggins, Larue, and Snipe
must all be truth tellers.
As you collect your data, look
for someone who had motive,
weapon, and opportunity. As soon
as you find a suspect with all three,
you can solve the case. Another
way to nail the murderer is to rule
out four suspects. For example, if
Whiggins had no gun. Snipe no
motive, Chauncy no motive, and
Bard no opportunity, then that
leaves a single possibility: Larue.
After uncovering the answer to
the mystery, you'll see how many
clues you were given (you can
usually finish with about ten clues).
You'll then be asked if you want to
play again.
Page Flipping
The electronic notebook is created
using page flipping, which means
relocating the screen display to a
different section of memory. This
technique is often used for anima-
tion on the Apple and Atari. While
one screen is displayed, the com-
puter draws the next picture on an
alternate (invisible) screen. Then, a
few POKEs cause the screen to
change to the next frame. You don't
need to know how it works to play
1 8 Best of COMPUTE! and Gazette
Sleuth, but if you'd like to use page
flipping in your own programs,
here's a brief explanation.
Location 53272 controls several
things, including the video matrix
base address (where, the screen
starts, in plain English). The upper
four bits of this location point to the
start of the screen. Normally the bit
pattern is 0001, meaning that the
screen starts at 1*1024. If we want to
change the location of the screen,
we must be careful not to disturb the
remainder of this byte. This can be
done using the following statement:
POKE 53272,PEEK(53272)AND15 OR S*16
The variable S holds the num-
ber of the IK block where the
screen starts. It must be a number
from 0 to 15 because the video chip
can access information such as
screen memory, sprite definitions,
and character definitions from only
one of four 16K blocks. So to
change the start of screen memory
to 12288 (12*1024), type:
POKE 53272,PEEK(53272) AND15 OR
12«16.
But POKEing to 53272 is not
enough. There are a couple of prob-
lems to overcome. Even though the
computer is now displaying screen
memory from a new location, the
BASIC editor is still printing to the
old screen.
Location 648 tells the operat-
ing system where to find the screen
if it needs to print something. It
contains the start of screen memory
divided by 256. Since the screen
normally starts at 1024 this location
is normally 4 (4*256 is 1024). To
change the start of screen memory to
12288 enter:
POKE 648,48.
Even after telling the computer
where to start its screen display
memory and telling the editor
where to print, there is still a prob-
lem. Locations 217 to 242 hold a
screen line link table necessary for
proper formatting of anything print-
ed to the screen. If you type more
than 40 characters on a line, the
computer uses the line links to find
out where to start the next line After
flipping pages, this table will still be
set to work with the old screen. The
line link table must be rebuilt to
work vrith the new screen. BASIC
has a routine that will do al! this for
HIGH SCHOOL MATH . . .
WE'LL HELP YOU MASTER IT!
THE MOST EFFECTIVE HIGH SCHOOL MATH SOFTWARE EVER DESIGNED
Intelligent
^^ Tutor
APPLE II SERIES * IBM PC/PC|r » COMMODORE 64/128
Eicbp3ck2gc in the Incclligcni Ttiiorxrin is complete 2nd self <onained. Each is designed 10 help students nrt/cw
and master basic principles md concepts, develop their ptvblcm-solving skills, ind build their confidence.
HIGH SCHOOL MATH SERIES
ALGEBRA I
Comprehensive coverage of all topics conained
year course in elemeniary i\gebn
GEOMETRY
Comprehensive coverage of all loptcs contained
jtar counc in geometry.
ALGEBRA 2
Comprehensive coverage of all topics contained
year course in intennediaie algebra
Tbc set of five titles above
149.95
inaone-
14995
inaone-
(49.95
in a one-
TRIGONOMETRY ft ADVANCED TOPICS S49.95
ComprehensivT coverage of all topics contained ina one-
year couise in [rigonomeir^', and other topics taught in
higher level hi^ school math councs.
SAT MATH 169.95
Comprehensive covcnge of the pnvblem types and skills
emphasized on ihe SAT exam Contains simulated tests,
forecasts of students' scores, and outstanding praaice for
the SAT exam
Is available at the special price of $199-99.
ALSO AVAILABLE
PREALGEBRA S49.95
Comprehensive coverage of junior high school mathe-
matics and the topics which form the foundation for
algebra
INTRODUCTORY CALCULUS 149.95
Comprehensive coverage of aU topics contained in an in-
iroduaory courK in differential and integral calculus
TO ORDER, CALL: ^m.
(800) 521-4518 "
IN INDIANA: 219-925-6166
When onkrlnx xM S3 SO ihippng ind lundllng
tndiin^ midrnli idd SX illn Hit
INTELLIGENT SOFTWARE, INC.
9609 Cypress. Miinstcr. IN 46321
us; the clear screen routine. Once
the screen is cleared, all the line
links are set for the new screen. But
in Sleuth, it's necessary that the
screen not clear when the pages are
flipped. The machine language rou-
tine at the start of the program does
the relinking without clearing the
screen and sets the color RAM to
blue.
It's possible to flip screen mem-
ory pages, but there is only one
location for color memory (starting
at 55296). This makes it necessary to
set the color memory when a page is
flipped. Otherwise, the characters
could be on the new screen, but
might be the same color as the
screen and would not be visible. A
second method is to save the color
RAM in another portion of memory
and move it back when the page is
displayed.
Finally, the new screens that
you create should be protected
from BASIC by POKEing location
56 and doing a CLR. Also, when
you're typing on an alternate screen
and press RUN /STOP-RESTORE,
location 53272 is reset but location
648 is not. Display memory is now
at 1024, but your typing is still be-
ing printed on the other screen.
This can be fixed by typing:
POKE 648,4
and pressing RETURN (even though
you can't see what's being typed).
If you don't want to write your
own page flipping routine, you can
use the one in Sleuth. Include lines
l-9,36,320,and 485-540 in your
program (you can renumber them,
of course). Line 1 protects the new
screens from BASIC and reads the
machine language routine, from
lines 2 to 9, into memory. This
should be done at the start of the
program.
Line 36 calls line 540, which
clears all the alternate screens.
Then the position array is set to 0.
This array, labeled C, keeps track of
which row the cursor is on when a
page is flipped and returns the cur-
sor to that row when the page is
restored. This routine should also
go at the beginning of the program.
Line 320 checks for the press of the
function keys. It should be included
as part of your key input routine.
Lines 485-535 are the main page
flipping routine and can be placed
anywhere in the program. ©
Best of COMPUTE! and Gazette 19
Switchbox
Todd Heimarck, Assistant Editor
Here's a challenging game of strategy
for the Commodore 128 that looks
easy at first, but takes time to master
and permits many variations.
Playing "Switchbox" is like putting
dominos in place for a chain reac-
tion— either you're setting them in
position or you're knocking them
over. Winning requires skill and a
sense of when to go for points and
when to lay back and wait for a
better board. The goal is simple: You
try to score more points than your
opponent by dropping balls into a
box full of two-way switches. Each
switch has a trigger and a platform.
If the ball lands on an empty plat-
form, it stops dead. But if it hits a
trigger, it reverses the. switch and
continues. In many cases dropping a
single ball creates a cascading ef-
fect— one ball sets another in mo-
tion, which sets others in motion,
etc., all the way down.
Box Of Switches
Switchbox is a tale of twos: Each
switch has two parts, two positions,
two states, two paths in, and two
paths out. The two parts are the
platform and the trigger. A switch
can lean to the left (platform left,
trigger right) or to the right (plat-
form right, trigger left):
The trigger is weak, and al-
ways allows balls to pass. But the
platform is strong enough to hold a
single ball. So the platform either
holds a ball — it's full — or it does
not and is empty. When a ball sits
on a platform, the switch is said to
be loaded, or full.
Figure 2 shows a full switch
Figure 1. Trigger States
Before: After:
Left switch Right switch
\\
Z7
9
Figure 2. Loaded Trigger
Left
Right
path
path
in
In
Z7
Z7
over two empty switches. The plat-
form holds a ball and leans to the
left. The trigger extends to the right.
Note that the switch on top has two
pathways leading in, the left path
and the right, and that the right
path leading out is the left path into
one of the switches below. The left
path of the top switch leads into the
right path of the other, the switch
below and to the left. If you drop a
ball down the righthand path, it
hits the trigger and flips that switch
to the right. Then it continues
down, hits the lefthand trigger be-
low and flips that switch as well.
In the meantime, the ball on
the platform is set in motion (when
the switch is flipped) and then hits
the trigger. The top switch is reset
to point to the left. The second ball
then drops a level to the platform
below, where it stops. The playing
field is composed of five levels,
with four switches in the first level
and eight in the bottom level. At the
beginning of the game, there are no
balls on the field — all platforms are
empty — and the position of each
switch is chosen randomly.
Moving Down The Path
Players alternate dropping balls
into one of eight entry points.
These balls (and others) may or
may not make it all the way
through the switchbox, to one of
the 16 exit paths. Balls fall straight
down (with one exception), so a
ball's movement is always predict-
able. When it hits an empty switch,
one of two things can happen. If it
lands on the empty platform, it
stops dead in its tracks. But if it
lands on a trigger, it falls through to
the next level below.
Moving balls always make it
through loaded svintches. Triggers
allow balls to continue, and move
the switch to the other position. If
it's loaded, the dead ball on the
platform is put into motion and it
hits the trigger that just moved over.
20 Best of COMPUTEI and GazeMe
This makes the switch go back to its
original position, but with an enipty
platform. So when a ball hits the
trigger of a loaded switch, its motion
continues unabated. The switch
moves, the ball on the platform be-
gins to fall and it hits the newly
placed trigger. The newly emptied
switch moves back again, and the
two balls drop to the next level.
There's one more possibility: a
ball dropping onto a platform that
already holds a ball. A platform
can't hold any more than one ball,
so when this happens one of the
balls slides over to the trigger. So
the ball does not move straight
down — it slides over to the next
pathway. This is the exception to
the rule that balls drop in a straight
line. Of course, when the ball hits
the trigger, the switch changes po-
sition, causing the other ball to drop
and hit the trigger.
The Chain Reaction
At the game's start, all platforms
are empty, so four of eight entry
paths are blocked. Remember that
your turn ends when a ball hits an
empty platform and stops. As the
switches fill up, the chances in-
crease that a ball will descend
through several levels. The goal is
to score points by getting balls to
pass all the way through the maze
of the switchbox. The best way to
collect a lot of points is to cause a
chain reaction.
A ball that hits a loaded switch
from either side continues on its
way. And the previously inert ball
on the platform starts moving. One
enters, two exit. If both of those
balls encounter full platforms, four
drop from the switches. The path-
ways are staggered, so the effects
can spread outward, with more and
more balls cascading toward the
bottom.
Rather than taking an easy
point or two, it's often worthwhile
to build up layers of loaded switch-
es. Watch out for leaving yourself
vulnerable, though. Because play-
ers take turns, you'll want to leave
positions where your opponent's
move gives you a chance to create a
chain reaction. The best strategy is
to play defensively. Look ahead a
move or two, and watch for an
opening that allows you to score
several points at once.
Four Quarters
A game of Switchbox always lasts
four rounds. In the first (equality),
each exit counts for two points.
Your goal is to score ten points. The
second quarter has more points
available, as well as a higher goal. If
you look at the exits, you'll see that
the further away from the middle,
the higher the point value. The
numbers increase in a "Fibonacci"
sequence: 1, 2, 3, 5, 8, and so on.
Each number is the sum of the pre-
vious two (1 4-2 is 3, 2 + 3 is 5, 3 + 5
is 8, etc.). The target score in round
two is 40.
In round three the numbers are
a bit lower. They increase arithmet-
ically {1, 2, 3, 4, up to 8 in the
comers). A goal of 20 points brings
you to round four, where you can
score big. Here the numbers are
squares: 1, 4, 9, 16, 25, all the way
to 64 at the edges. In rounds two
through four, it's sometimes pru-
dent to leave a middle path open
for your opponent to score a few
points, in order to gather a high
score on the big numbers to the left
and right.
Each round lasts until one
player has reached the goal. At that
point the other player has one last
turn before the round ends. It's pos-
sible to win the round on this last-
chance play; watch out for barely
topping the goal and leaving a
chain reaction open for the other
player. An arrow points to the
scoreboard of the player whose
turn it is. On the other side of the
screen, you'll see a number where
the arrow should be. That's the goal
for the current round (the Amiga
version displays the goal on both
sides of the screen, below the
scoreboards).
Bonus points are awarded at
the conclusion of each round. Four
numbers appear below the score-
cards. The first is simply the total so
far. The second is the total plus a
bonus of the goal for the round if the
player's points are equal to or
greater than the goal. For example if
the goal is 20 and you get 1 8, there's
no bonus. If you score 22, the bonus
is the goal for that round (20) and
you'd have 42 poirxts. The third
number under the scoreboard is the
difference between scores for the
rounds. If you win by two points.
two is added to your score (and two
is subtracted from the other player).
The final number is the grand total
of the first three scores and bonuses.
Rounds one and three are fairly low-
scoring with low goals. You may
want to seed the field with extra
balls during these quarters, so you
can collect more points in the sec-
ond and fourth quarters.
Variations
Although the goal of the game is to
score the most points, there's no
reason you couldn't agree to play
for low score. In a "lowball" game,
you would try to avoid scoring
points. You wouldn't necessarily
play backwards, you would have to
adjust the strategy of where to place
the balls. Fill up the board as much
as possible and leave your oppo-
nent in a situafion where he or she
is forced to score points.
The DATA statements at the
beginning of the program (the Setup:
routine in the Amiga version) deter-
mine the goal for each round and
the point values for the exit paths.
You can prolong the game by dou-
bling the goals; this also dilutes the
value of a big score at the beginning
of a round, preventing one player
from vanning on the first or second
turn. An interesting variation is to
assign negative values to some slots.
If some paths score negative points,
you are forced to think harder about
where the balls will drop.
In addifion to the numbered
keys (1-8), the plus ( + ) and minus
( — ) keys are active. Pressing plus
drops a ball at random down one of
the eight entry paths. Pressing
minus allows you to pass your turn
to your opponent.
Once you've mastered the reg-
ular game, you can add some new
rules. Each player gets three passes
per half, similar to the three
timeouts in a football game. If you
don't like the looks of the board,
press the minus key to use one of
your passes. After one player has
skipped a turn, the other player
must play (this prevents the possi-
bility of six passes in a row). It's also
a good idea to make a rule that a
player can't pass on two consecu-
tive turns. You can also give each
player two random moves to be
played for the opponent. In other
words, after making a move, you
Best of COMPUTEI cff>d Gazette 21
could inform your opponent that
you're going to give him one of
your random moves and you would
press the plus key.
Here's one more change you
could make: Instead of alternating
turns, allow a player to continue
after scoring. When a player drops a
ball and scores some points, the
other player would have to pass (by
pressing the minus key). If the first
player scores again, the opponent
passes again, and so on until no
more points are scored.
Playing Solitaire
To drop a ball, press a numbered
key (1-8). If you're using a 128, ST
or Amiga, the numeric keypad is
convenient for choosing a move. By
using the pass and random turn
options, you can play against the
computer. Here are the rules for
solitaire play:
1. The computer always scores
first. At the beginning of every
round, the computer plays random-
ly until at least one point is ac-
quired. Press the plus key for the
computer's turn. You must contin-
ue passing (skip your turn with the
minus key) until the computer puts
points on the board.
2. After the first score by the
computer, you can begin to play.
When the computer has a turn,
press the plus key for a random
move.
3. Whenever you make points,
you must pass again unhl the com-
puter scores. When the computer
gets more points, you can begin to
play again. This rule means you
should hold back on the easy scores
of a few points; wait until there's an
avalanche available.
4. If you're the first to reach the
goal, the computer gets a last
chance. Don't make this move ran-
domly; figure out the best opportu-
nity for scoring and play that move
for the last-chance turn.
In the interest of keeping the
program at manageable length, no
attempt has been made to provide
an "intelligent" computer oppo-
nent. Once you become familiar
with the game, you might find it an
interesting project to try adding
some routines that give the com-
puter a rational basis for picking
one move over another. ©
Q-Bird
Mike Sedore
This delightful and colorful arcade-
style game for the Commodore 64
challenges your character, a defense-
less (but nimble) baby bluebird, to
survive among a crew of nasty, hungry
enemies. A joystick is required.
Other birds say you're paranoid,
but you're not — everyone really is
out to get you. You often ask your-
self how long a defenseless baby
bluebird can hope to survive when
a host of voracious predators are
looking for a meal. If only you
could leave this place to find a new
home. But alas — you're too young
to fly. The best you can manage is a
flapping long jump. But you'd bet-
ter be careful not to jump too far:
You could fall a long way down.
Q-Bird is played on a 6 X 7
grid. There are 15 levels of play
from which to choose. As you play,
you advance level by level by com-
pleting grids. A grid is complete
when the color of each square
matches the goal color shown at the
bottom of the screen. To change the
color of a square, simply hop on it.
You have to jump on each square
once in level i, twice in level 2, and
so on up to level 15. A bonus life is
awarded each time you complete a
level. If you reach level 15, you
should feel satisfied. It doesn't get
any harder than this. But don't re-
lax; it doesn't get any easier either.
You start with five lives.
Choose your starting level by push-
ing forward on the joystick (which
must be plugged into port 2). If you
pass the level you want to play, pull
back on the stick to reverse the level
counter. Press the fire button to
begin play. To hop, simply move
the joystick in the direction you
want to go. For a super jump, push
the fire button as you hop: You'll
leap over a square and land on the
next. If you time it right, you can
leap right over your enemies. But
be careful not to jump over the side
of the grid. That costs one life.
Press SHIFT-LOCK to pause
the game. To restart a game, press
RUN/STOP-RESTORE.
Leapln' Lizards
Three purple lizards live on the
grid. They randomly leap off of
their tails from square to square,
landing on any bluebirds careless
enough to get in their way. But
they're the least of your worries.
There's a king cobra that relentless-
ly chases you. He's got a hole in his
stomach just the size of a baby
bluebird. If he doesn't get you, then
perhaps the low-flying and hungry
hawk will. And while you're look-
ing out for all of these villains, try to
dodge the runaway balls that roll
down the grid. Any one of them
could turn you into a bluebird pan-
cake in a moment.
Fortunately, you do have an
ally. Occasionally, a flashing egg
appears on a random square. If you
hop on it, you momentarily stun all
the grid inhabitants. You can now
go anywhere you please without
harm. Unfortunately, this doesn't
last long. When the safe time is
nearly through, your character, the
bluebird, begins flashing. All action
returns to normal after the third
flash, so be ready for the frenzy to
continue. ®
22 Best ot COMPUTE! and Gazette
Hex War
Todd Heimarck, Assistant Editor
You float high above a distant planet,
controlling robot armies below. Can
you take control of the priceless min-
ing turf planetside, or will your oppo-
nent's robot crews prevail? To win at
this thoughtfully designed, engaging
strategy game, you'll need foresight
and conceptual skills rather than a
quick hand on the joystick.
"Hex War" is a two-player strategy
game that can be played five differ-
ent ways, and there are limitless
variations. But the basic premise is
always the same: You and an oppo-
nent move armies on a field of
hexagons, attempting to capture
territory.
The goal of the first two games
is simple: capture the capital city of
the other player. In game 1, the
capital cities are far apart; you must
devote some of your armies to de-
fending your own capital while at-
tempting to breach the walls of the
other capital. Game 2 puts the capi-
tals near each other, so offense and
defense tend to merge in this sce-
nario. Most of the action takes place
within a small area of the battle-
field.
Games 3 and 4 spread the ac-
tion over a wider area. In the third
game, your object is to occupy eight
of the twelve cities on the game
board. Six cities occupy the periph-
ery, and six are in the center of the
playfield. Game 4 requires actual
control of six cities; you must have
an army in the city, one that's not
involved in a battle, before you're
credited with control (this version
will probably take the most amount
of time to play).
Although the first four scenari-
os encourage a commitment to bat-
tle, you employ different tactics in
the fifth. The goal here is to acquire
40 of the 61 hexes, so you need
some free armies to move around.
As soon as you claim 40 hexes, you
win the game.
When you first run Hex War,
the computer pauses to set up the
screen, then displays a menu of five
choices. The five different games are
explained in detail below. If you're
new to the game, press the 1 key to
choose game 1. There will be anoth-
er short pause while the variables
are initialized, and then you'll see a
playfield with 61 hex shapes, con-
taining four armies on each side.
Hexes And Hexadecimal
A chess board has 64 squares ar-
ranged in a rectilinear grid. Hex
War gives you a playing field of 61
hexagons (almost as many as a
chess board), but they're part of a
six-sided honeycomb field. If
you've played war games before,
you may recognize the hexes.
Before playing, plug the joy-
stick into port 2. At first, the cursor
movement may seem unusual. The
cursor travels not up-down/left-
right, but northeast-southeast/
northwest-southwest. To make the
movement less confusing, turn
your joystick 45 degrees clockwise,
so that what was up becomes
northeast, and so on.
Each hex has six neighbors, so
an army can move in six possible
directions. To travel left and right,
you'll have to push the joystick
twice (for example, up and right on
the joystick to move one hex to the
right, which counts as one move-
ment).
Army strengths are listed in
hexadecimal (base 16) numbers, so
the four armies labeled 40 actually
have strengths of 64 (the hexadeci-
mal value 40 equals 64 in our every-
day decimal numbering system). At
the beginning of a turn, any army
has exactly three movement points.
It requires one point to move an
army into a neutral or enemy-
controlled zone. To move through
the same zone also requires a point.
To move into and through a friend-
ly hex requires a total of one point.
This means you can move a single
army through two neutral or enemy
hexes in any one turn, but the same
army can move through up to three
friendly zones during a turn.
Select an army by moving the
cursor onto it. Click the joystick
button once, then position the cur-
sor on a neighboring hex and click
again. If you wish to stop, click
again, and two plus signs (++)
will appear, signaling that no more
movement can occur. Otherwise,
position the cursor on another
neighboring hex and click.
Best of COMPUTE! and Gazette 23
Zones Of Control
Each army controls the six contigu-
ous hexes surrounding its resident
hex. If you enter an enemy's zone
of control, you forfeit any addition-
al moves and must prepare for bat-
tle. In addition, an army that begins
the turn in a zone of control cannot
move until the battle is resolved.
Robots Vs. Robots
In this game, you aren't really on
the planet, but parked high above it
in a remote mothership. You've
landed some robots to explore the
area, and they've encountered ro-
bots belonging to another explorer.
Your robots, or bots as you call
them, follovk' your orders to ad-
vance toward the other bots. Each
bot has a mining laser which can
stop or disable the other bots. Also,
your bots have disrupter beams
which can daze another bot, tem-
porarily confusing it. When two
bot-groups come close to each oth-
er, they shoot lasers and disruptors
until one army of bots is disabled.
Three things can happen to a
robot which suffers a hit. If the
robot suffers a direct hit in its logic
unit by a laser, it is vaporized. It is
destroyed forever and never reap-
pears in play.
The second thing that can hap-
pen is injury. If the laser beam is
deflected, the robot is out of com-
mission until it can be transported
back to a botspital. An injured bot is
frozen in place until the battle is
finished, after which the victorious
army carts away the injured bots to
be repaired and reused.
Thus, winning a battle means
you evacuate both the friendly in-
jured and the enemy injured. After
all of the injured bots recover, they
join the force in whose botspital they
were healed. In effect, injured bots
eventually become members of the
army which won the battle in
which they were damaged.
The third possibility is confu-
sion: The robot is temporarily disori-
ented for two turns. When the time
has passed, the robot is ready again.
Reprogromming Bots
Moving the cursor onto an army of
robots brings up a status window in
the upper-left comer of the screen.
The number in reverse video is un-
important; it's the army number
(which may change as the game
progresses).
The four numbers underneath
are significant, however. The first is
the army's active strength {in deci-
mal). The second is the number of
injured robots, which will be trans-
ported to the botspital of whichever
side wins the battle. The third — on
the line below — is the number of
disrupted robots who will be avail-
able for combat in the next turn.
The fourth number is how many
robots can join the active force two
turns from now.
if one side is able to reduce the
other player's active force to zero,
two things happen. The winner
sends all injured bots away to be
repaired. The winning side also col-
lects all enemy bots (injured or
dazed) and sends them to the rein-
forcement center to be repro-
grammed. Eventually all these bots
will available to the winner of this
particular battle for future engage-
ments.
Reinforcements
And Mergers
At the start of the game, you'll see
some armies positioned outside of
the hex field. These are reinforce-
ments and reserves in transit to the
battle. Player one's reinforcements
enter at the bottom right comer;
player two's enter at the top left.
The line of new armies moves
counterclockwise; the army next to
the entry point is the next to enter
the battlefield.
However, the reinforcements
cannot enter the battlefield if an
army (friendly or enemy) is block-
ing their way. Keep your armies off
your own reinforcement point, and
try to block your opponent's armies
from this area if you can. If the
entry hex is owned but not occu-
pied by your opponent, you'll lose
some reinforcements.
After completing a turn, you
are credited with additional rein-
forcements according to how much
territory you own. Passing over a
hex allows you to claim it; the hex
changes color to indicate owner-
ship. Each piece of property pro-
vides enough ore and energy to
build a new robot, available for use
two tums in the future. The num-
bers in the line of reinforcements
are updated after you move to show
additional robots being built.
Winning a battle also provides
additional armies in the line of rein-
forcements. As mentioned above, a
victorious army captures any dazed
enemy bots, which are repro-
grammed and available in three
tums. At the same time, the winner
evacuates injured bots of both
sides. Transportation and repair
take five tums for friendly bots,
seven for enemy bots. The two ad-
ditional tums are needed for repro-
gramming the opponent's forces.
If you're losing a battle, the
number of injured robots (dis-
played in the status window) will
begin to rise. Reniember that, if
your opponent reduces your active
strength to zero, he or she will cap-
ture all of your injured bots; they'll
be reprogrammed and added to fu-
ture reinforcements. To prevent
this from happening, you're al-
lowed to bring in a second army for
merging. Simply move another
army on top of the army with which
you want to merge. There's just one
mle: One or both of the armies
must have a strength less than 32
decimal (IF or less in hex).
Customizing The Scenarios
The five built-in scenarios provide
plenty of variety, but if you'd like to
add more challenges, here are some
suggestions.
First, a note about the logical
organization of the grid. The vari-
ables T and B, CT and CB, and HT
and HB are used to locate the coor-
dinates on the playing field (see
figure). The first number is T (or HT
or CT), the second is B (or HB or
CB). These coordinates are also
used in the three-dimensional MAP
array (where level 0 of the array is
the army number, 1 is the current
owner and 2 keeps track of whether
or not a city is located there);
they're also part of the ARMY ar-
ray. By varying the starting posi-
tion, number of armies, reinforce-
ment strengths, and location of
cities, you could simulate historic
battles.
To add or subtract cities from
the field, change the value of CN in
line 50. You'll also have to change
the DATA statements in lines 270
and 280. The numbers there are the
T and B coordinates of the cities.
The strengths and locations of
24 Best ot COMPUTEl and Gazette
the armies can be changed as well.
The DATA statements starting at
line 1540 determine the strength
(64) and T/B coordinates for the
armies at the beginning of the
game. If you wish to start with more
armies (or fewer), you'll have to
change the inner FOR-NEXT loop
(with the index of K) in line 1500. In
that same line, change NX(J) to one
number higher than the number of
armies on each side. For example, if
you want six armies apiece, change
NX(J) to 7. The subroutine at line
1600 sets up the reinforcements; if
you don't like the random patterns,
change the formula here.
Variables defined in lines
70-90 control the play of the game.
PN determines which player goes
second; it can be either zero or one.
Variable ME controls the maximum
merge strength. If you'd like to be
able to merge any two armies,
change it to a high value (512, for
example). To remove the merge op-
tion altogether, change ME to zero.
The movement points are de-
fined by MM in line 80. Movement
across friendly territory takes one
point, across neutral or hostile terri-
tory two points. Increasing MM will
give your armies more mobility.
The three variables KA, KB, and KC
affect the outcome of individual
battles. KA determines how many
bots are vaporized, KB controls the
number injured, and KC affects
how many are dazed. If you make
the fractions smaller (1/24, for
example), the battles end more
quickly. The subroutine starting at
line 2600 resolves current battles.
Running Hex War
To play Hex War, type this line in
direct mode (without line numbers):
POKE 44,64:POKE 64*256,0:NEW
Be sure to press RETURN after you
type the line. Now load and run
Hex War as usual. It is very impor-
tant that you perform this step
before running the program: If you
don't, the screen will be jumbled
and impossible to decipher.
You may find it easier to let the
64 handle this chore for you. "Hex
War. Loader" is a short loader which
performs the setup, then loads and
runs Hex War. To use the loader,
you must have the main program
saved with the name HEX WAR on
the same disk as the loader. ©
Space
Gallery
Jeff A, Lapkoff
Swirling frisboids, pellets, and heat
seekers are headed your way. Can you
fend them off with your cannon? A
colorful arcade-style game written
entirely in machine language for the
Commodore 64. Joystick required.
The year is 2023, and you're a solo
space gunner on an earth-orbiting
colony. You must try to defend
against hostile forces, and as the
colony's sharpshooter, you must re-
main stationed at the video control
center. For days, the radar has
shown an approaching force, and
based on the direction and speed at
which they're coming, you know
what to expect: the dreaded fris-
boids, curious but deadly creatures.
They come in waves of four, but
you have only one cannon. And
they shower you with lethal pellets,
which can destroy your cannon.
The object of "Space Gallery"
is to shoot as many frisboids as you
can while dodging the falling pel-
lets. To fire at a frisbold, press the
fire button on your joystick
(plugged into port 2). For each one
you hit, you earn five points. Your
cannon has unlimited ammo; how-
ever, the fewer shots you take, the
higher your shot bonus at the end
of each level of play.
To dodge the pellets, move your
cannon left or right with the joystick.
If your cannon is hit by a pellet, it
will explode. The game ends when
you've used up five cannons.
A Bonus And An Option
Shooting down five waves of fris-
boids advances you to a higher lev-
el and, if you didn't use too many
shots, rewards you with a shot bo-
nus. Once you get to level five, you
receive an extra cannon.
Space Gallery also features a
heat seeker option, but beware — it
makes the game much more diffi-
cult. The heat seeker is a normal-
looking frisboid that drops blue
pellets, which home in on your can-
non. At the beginning of the game,
you can activate the heat seeker by
toggling on the gray square at the
bottom of the screen. <9
Best of COMPUTE! and Gazette 25
Whirlybird
This hyperactive bird lays some rath-
er unusual eggs. A fast action game
written entirely in machine language
for the Commodore 64. A joystick is
required.
"Whirlybird" is a fast, updated ver-
sion of the classic game Breakout.
It's written entirely in machine lan-
guage. You control the Whirlybird,
who flies back and forth at the top
of the screen, spinning continuous-
ly. The goal is to clear out the layers
of colored bricks at the bottom by
bouncing eggs against them. When
an egg moves back in your direc-
tion, move the Whirlybird into its
path to bounce it back down. The
game ends when you clear the field
of bricks or run out of eggs.
Plug a joystick into port 2, then
load and run Whirlybird as if it
were a BASIC program. Do not try
to start the program with SYS. The
playfield appears immediately,
with the Whirlybird twirling across
the top of the screen. On either
edge is a sparkling row of side-
beams, and below are multicolored
rows of bricks. At the upper right is
the number of eggs you'll have in
this game. Though the usual num-
ber is ten, you can get a smaller or
larger number (up to 255) by push-
ing the joystick backward or for-
ward. (Don't select zero — you'll
simply return to the startup screen.)
Next you must pick the skill
level. Press fl to play a normal
game or f3 for an expert game. At
the expert level, the Whirlybird is
only half its normal size, making it
harder to hit the eggs. After choos-
Philip I. Nelson
ing the level, the prompts disappear
and play begins.
Press the fire button to release
the first egg. You earn one point
every time you hit a brick, and ten
points every time you bounce an
egg back down with the Whirly-
bird. Letting the egg fly past you
into space subtracts ten points from
your score (unless it's already un-
der ten). When that happens, the
sidebeams sparkle continuously
until you press the fire button again
to release the next egg. Play contin-
ues until you lose all your eggs or
clear the field of bricks. A 50-point
bonus is awarded for clearing every
brick from the screen.
In addition to normal bricks,
the playfield contains a few round
ones. When the egg hits one of
those, the Whirlybird swoops down
to deposit a sidebeam somewhere
above the playfield. This doesn't
affect your score, and you get a free
egg as well (press the fire button to
release it). However, the extra side-
beams add an extra element of un-
certainty since the egg rebounds
sideways from them (not up and
down) and they may or may not
disappear when struck.
Whirlybird displays your cur-
rent score as well as the highest
score attained during the current
session (which may include more
than one game). When a game
ends, both scores are displayed un-
til you release the first egg in the
next game. Then the current score is
cleared to zero. Since the high score
is stored within the program code,
you can record it for future compar-
ison by resaving the game after
each session ends. (It's a good idea
to resave it with a different file-
name—like "BIRDHIGH"— to dis-
tinguish it from the original copy,
which then serves as a backup.) The
next time you load and run Whirly-
bird, it displays the previous high-
est score.
The Joystick Accelerator
It may take some practice to master
the joystick motion in Whirlybird.
Rather than zooming immediately
to the spot you want, the bird
moves in an elastic manner that
simulates the inertia and momen-
tum of a natural object. It takes a bit
of pushing to overcome the bird's
inertia and get it moving. The long-
er you push in one direction, the
more speed and momentum you
gain (up to a point). After you let up
on the stick, the bird slows down
and eventually stops by itself. Hit-
ting the sidebeam reverses your di-
rection immediately. Reversing
direction in midscreen may take a
long or short time depending on
your speed.
You might think of the joystick
in this game as a gas pedal in a car.
Keeping your foot on the accelera-
tor makes the car move faster and
faster. Let up and the car gradually
slows down. Learning to control
the acceleration takes some time.
You may find it more effective to
move the Whirlybird with short
taps on the joysrick, rather than
long periods of acceleration.
Egg Juggling
The direction an egg bounces when
it hits the Whirlybird depends on
which way you're pressing the joy-
stick. If you're not pressing it left or
right, the egg rebounds as if the bird
were a solid wall. If you're pressing
26 Best of COMPUTE! and GazeHe
the stick left, the egg bounces to the
left; if you're pressing right, it
bounces to the right. This lets you
control the direction of every bounce.
But don't move the stick so much
that you miss the egg completely.
The result of a bird-egg collision
also depends on what part of the bird
you hit. The safest strategy is to hit
the egg uith the bird's feet. Bouncing
it off a wing is more dangerous, since
the bird never stops turning. If the
egg arrives when the wing is out-
spread, you'll usually get a normal
collision. But if the VVhirlybird hap-
pens to be facing sideways — making
it very slim in profile — the egg may
miss completely.
Occasionally a wing collision
causes the bird to juggle the egg
briefly. Juggling gives you extra
points and may also change the
angle of rebound slightly {a boon
when you're short on eggs and
need to clear the last few bricks).
But it's also dangerous, since the
bird may juggle the egg upward
and out of play. Juggling occurs less
frequently at the expert level; with
smaller wings it's more difficult to
get multiple collisions.
Rings And Filters
Whirlybird's unusual sound effects
are created with two voices of the
64's sound chip. Voice 3 is used as a
random number generator {to pick
a random screen posihon and direc-
tion for each new egg) and doesn't
produce any sound. Voice 1, set for
a pulse waveform, makes a "boing"
sound when an egg bounces, and
voice 2 creates low, thrumming
tones in the background with a ring
modulated triangle wave. The
vibrato-like effect results from ring
modulated overtones that slowly
pass in and out of phase with the
frequencies of voices 1 and 2.
These sounds are made more
interesting by passing them through
a combined lowpass/bandpass filter
and sweeping the filter's cutoff fre-
quency up or down in conjunction
with other game events. When you
start the game or when the egg is
flying freely, the cutoff frequency
sweeps up and down, creating a
gradual meow-meow effect. When
the egg hits something, the cutoff
frequency is set high and swept rap-
idly downward to accentuate the
bouncing noise. ®
Prisonball
John Scarborough
Version by Kevin Mykytyn
Nearly everyone has played Pong or
Breakout, two computer-game clas-
sics. "Prisonball" creates an intense,
two-player action game by drawing
features from both of those games.
Either a pair of paddles or two joy-
sticks are required.
"Prisonball" is a two-player action
game that combines the best ele-
ments from two classic computer
games. Pong and Breakout. The ob-
ject of the game is simple — knock
out as many bricks as you can in the
allotted time.
Brealc To The Center
The game begins by displaying five
colored walls running vertically
down the center of the screen. Each
player controls two paddles located
at the left and right sides of the
screen. Three balls appear at a ran-
dom location and start bouncing
around the screen. When a ball is
on your side of the screen, move
one of your paddles into its path to
deflect the ball toward the walls.
You can only hit a ball when it's
moving toward your paddles (away
from the interior walls). Balls trav-
elling from the opposite direction
go right through your paddles. If
you happen to miss a ball, it wraps
around the screen and appears on
the other side, giving your oppo-
nent a chance to score.
At the beginning of the game,
all three balls are a neutral color.
Each time you hit a ball, it changes
to the color of your paddle. You
score whenever a ball of your color
hits one of the five interior walls.
The score depends on which wall
you hit. The center wall is the hard-
est to reach, so it yields the most
points. The two intermediate walls
are worth less than the center wall.
The outermost walls are easiest to
hit and score the fewest points.
Every time a ball hits one of the
walls, a brick is knocked out of the
wall at the point of impact. By aim-
ing your shots carefully, you can
bore a path through a wall and
move a ball into the interior space
between two walls. When this hap-
pens, the ball bounces wildly back
and forth between the walls, scor-
ing many points in a short time.
An additional bit of strategy
has to do with the redrawing of
walls. Whenever a wall has been
destroyed, it is immediately re-
drawn. Some of the highest scores
result when you trap one or more
balls behind a wall when it is re-
drawn. Since the wall is new, the
trapped balls may hit it many times
before they break back out to the
exterior.
Either joysticks or paddles can
be used to play this game. To play
with paddles, plug a pair of paddles
into port 2. Each game lasts for
three minutes. The screen border
flashes briefly as a warning when
only 20 seconds remain on the timer.
Bricks from the center wall are
worth 30 points, those from the two
adjacent walls are worth 20, and
the outermost bricks each score 10
points. ®
Best of COMPUTEI and Gazette 27
Quickchange
You'll need a good strategy and fast
reaction time to succeed in this mind
boggier. Three games in one for the
Commodore 64. A joystick is required.
Are you ready for a challenge?
"Quickchange" — three games in
one — requires logical thinking,
manual dexterity, and a good strat-
egy. If you work quickly and stay
cool, you should be able to survive
for a few rounds. None of the
games is easy to master. The three
games use the same board and have
the same basic format, but each has
a different twist.
Use the command LOAD
"QU1CKCHANGE",8,1 to load the
program. When it's finished load-
ing, enter SYS 49152. Be sure to
have a joystick plugged into port 2.
You're first presented a menu
with a selection of three games: Flip
Flop, Missing Pieces, and No Turn-
ing Back. Move the arrow with your
joystick to select a game, and press
the fire button to start. It is suggest-
ed that you start with Flip Flop and
progress to No Turning Back.
Flip Flop
The playing field is a 120-square
grid, 8 rows by 15 columns. You're
represented by the black circle
starting at the center of the grid.
Eight black pieces, one in each row,
start at the left and move across the
grid. Each moves at a different rate
of speed to the far right edge and
then returns, and so on. Contact
with one of the black squares costs
one player (you begin with three).
The object of the game is to
move your piece around the grid
and change the color of all the
squares from pink to blue (different
colors in successive levels) while
Kevin Mykytyn and Mark Tuttle
avoiding the moving black squares.
And all this must be accomplished
in 60 seconds. Moving into one
square instantly reverses its color.
It's important that you choose your
course carefully. Backtracking over
blue squares changes them back to
pink. When you complete the grid
(change all squares to blue) within
the allotted time, you advance to
the next level. For each successive
level, the speed of the black squares
increases. It doesn't get any easier.
One point is awarded for each
square you flip to blue. However,
once a square is flipped, you do not
receive any additional points for
flipping it again. You lose a point
for changing a square to the wrong
color and gain back the point when
it's changed back to the right color,
so your score can move up and
down. You receive 100 bonus
points for each level completed.
Throughout the game, current
score, high score, current level, time
remaining, and number of players
remaining are displayed. The game
can be paused at any time by press-
ing SHIFT or SHIFT LOCK. Release
it to resume play. The game is over
when you've used all three players
or when time runs out.
Missing Pieces
The play in this game is nearly
identical to Flip Flop. But there's a
twist. Several pieces — randomly
selected each time you play — are
removed, thus creating empty
spaces — holes. If you happen to
leap into one while hurrying along,
you lose one of your players. Un-
fortunately, the black squares are
unaffected by these empty spaces.
They move through them as if they
weren't there.
The scoring and rules from Flip
Flop apply to Missing Pieces.
No Turning Back
This is the most exciting — and most
difflcult — of the games. The play-
ing board is the same as Flip Flop,
but the object of the game is differ-
ent. Once you move away from a
square, it's erased. The goal is to
eliminate the squares (you are cred-
ited with clearing the board if three
or fewer remain).
Moving into an empty space is
not allowed. But, unlike Missing
Pieces, the black squares cannot
move into the voids. They'll reverse
direction if they encounter one of
these spaces. This can be used to
your advantage. You can cut off a
black square by removing the
squares horizontally adjacent to it.
This will erase a black square and
free up an entire row. For each
black square removed, 100 points
are added to your score (plus 1
point for the space previously occu-
pied by the black square).
This game is trickier than the
others. In haste, it's easy to isolate
your own player. Remember, the
object is to eliminate the squares,
and you can't enter a voided space.
Also, be aware that when you lose a
player — provided it's not your
last — your next player is positioned
in the center of the screen. If there
are no available pieces adjacent to
the center, you've eliminated your-
self from the game.
There's A Way To Win
The key to success in each of these
games is to find the right pattern.
There are several that will work. If
you randomly move around the
maze, you'll find that although you
can accumulate points, you'll prob-
ably run out of time.
Quickchange may be played
competitively for highest score or
just for the challenge of completing
a level or two. ®
28 Best of COMPUTE! and Gazette
Saloon Shootout
David Hensley, Jr. and Kevin Mykytyn
You'll have your hands full in this
action-packed, arcade-style game. It's
one of the most challenging and
graphically charming games we've
published. For the Commodore 64,
Plus/4, and 16. A joystick is required.
If you're a sure-shot, dead-eye, trig-
ger-happy gunslinger, you'll be
suited to this wild and woolly ac-
tion game. In "Saloon Shootout,"
the pace is frantic and it never slows
up. The object of the game is to
accumulate the highest number of
points before time runs out or
before you run out of bullets.
Of Mice And Mugs
There's a lot to contend with in
Saloon Shootout. A gun, which ap-
pears on the bar, is your weapon.
It's controlled by your joystick
(plugged into port 2). By moving
the joystick up and down, you con-
trol the distance your bullet travels.
You'll notice the gun barrel shift up
and down as you move the joystick.
Also, an arrow on the right of the
screen will help you gauge the dis-
tance your shot will fire.
A main objective of the game is
to shoot as many mugs as you can
before they fall off the bar. For
every ten of these you shoot, a run-
ning mouse appears. Each time you
shoot this critter, you receive a bo-
nus score and it reverses direction
and speeds up. Every time you hit
him, the point total escalates and so
does his speed. {This is where you
can get a lot of points for those
potential high scores.)
This may sound pretty easy so
far, but your job at the saloon is
much more complicated. You must
also keep your eye on the three
windows on the back wall of the
saloon. They're sometimes opened
by a masked desperado who will
steal ten of your bullets unless you
shoot him before he disappears. But
don't be too hasty — sometimes
good guys appear (the good guys
smile), and shooting them results in
a stiff penalty^lOO points sub-
tracted from your score. If your sup-
ply of bullets is running low, you
can replenish them by shooting the
cards that appear on top of the
player piano. However, you must
shoot the cards in order: 10, J, Q, K,
and A. Be careful here — one card
hit out of order will reshuffle the
deck and you'll have to start over.
Now you can see that this is no
simple task.
There are a few features that
help to calm your nerves, however.
If you reach a score of 500, you
receive a bonus time of 50 seconds.
To help you keep track of the time
remaining, the screen flashes when
there are 25 seconds left. As noted
above, the arrow on the right side
of the screen helps make sure that
those valuable bullets you're shoot-
ing are not wasted. And finally, the
player piano cranks out ragtime
tunes to help relieve the tension. To
change the tune, shoot one of the
white keys on the player piano. To
turn the music off, shoot a white
key twice.
Gome Strategy
When the game first runs, you have
a few seconds before the mugs start
to appear. It's wise to use this time
to shoot a few of the cards (in order,
as we mentioned) in case your bul-
lets run low during the game. Try to
make the mouse appear as many
times as possible to receive higher
scores. When it appears, try to
shoot it as many times as possible.
Unless your bullet count is high, it's
a good idea to set your sights on the
windows as they start to open. And
remember to keep an eye on your
bullet supply and the time
remaining.
To play Saloon Shootout, load
the program using the format LOAD
"SALOON",8,l Start the game by
typing SYS 10240 and pressing
RETURN.
Statistics And Point Totals
Time:
2 minutes
Bullets:
35
Scoring
Mugs:
Missed mugs:
Cards:
10
-5
10
Back of card:
-10
Good guy:
Bad guy:
Mouse:
-100
25
20,40,60,80,100
6
Best of COMPUTEI and Gazette 29
"Props" is a fast-paced, nonviolent
game for the 6i with six levels. Ani-
mated in machine language, it uses
all eight sprites, programmed charac-
ters, and all three SID voices for
sound effects.
Included in the article is a de-
tailed program discussion which of-
fers a variety of excellent
programming tips and techniques.
You are a lonely pigeon, lost in a
dangerous sky filled with whirling
propellers. Your mission is to return
to your coop and your mate, for a
brief rest before flying away again.
To make matters worse, every time
you leave, and at other uncertain
intervals, your mate moves to a
new coop.
While in flight, you must avoid
getting pulled into the propellers. If
that happens, you lose points. Un-
less you escape quickly, the props
may pull you back again and again.
The props start in orderly forma-
tion, but every collision will bump
one out of line; so the worse you
play, the more confusing things get.
To play, plug your joystick into
port 2. The six skill levels range
from leisurely to manic. Whenever
you reach home, your score is dis-
played briefly. If you press the fire
button during the score display, the
game pauses to let you catch your
breath. During the pause, you can
change to a different skill level by
pressing number keys 1 through 6.
To quit, just pause and press the 0
key. If you score well at any given
Props
Philip I. Nelson
level, the game pauses by itself and
lets you pick a new skill level.
The Animation Subroutines
Two main machine language (ML)
routines are responsible for virtual-
ly all the animation. The first one
reads the joystick, moves your bird
shape accordingly, and flaps the
wings of both birds. The second
rotates the eight propeller sprites
and moves them up or down. Two
additional small routines help pro-
gram a new character set and fill
color memory with white values for
the new-ROM 64s.
Let's look first at the bird-
moving routine (Birdmove), which
you could adapt for just about any
graphics game. Birdmove animates
our bird-shaped character. The rou-
tine keeps track of a variable, BIRD-
LOC, that represents the bird's
current screen location. To move
the bird around in screen memory
(locations 1024-2023), first we put
a blank space into BIRDLOC to
erase the character.
Next we check to see whether
any movement has been requested
through the joystick. If so, we
change the BIRDLOC variable to
represent the new screen location.
If not, BIRDLOC stays the same. In
either case, we then plant a new
bird shape in the updated BIRD-
LOC screen location.
Setting The
Bird's Boundaries
To move the bird left or right. Bird-
move will subtract or add 1 to
BIRDLOC. To move the bird up or
down on the 40-column screen, we
subtract or add 40 to BIRDLOC.
Before moving our pigeon around
in memory, we need safeguards to
prevent the bird figure from flying
above screen memory into the
BASIC program space, or below it
into the sensitive zero page of
memory, either of which could
crash the computer.
Birdmove uses two techniques
to confine the bird. The first com-
pares BIRDLOC to absolute upper
and lower limits. If you try to move
lower (<1024) or higher (>2023)
than the bounds of screen memory,
Birdmove will terminate without
changing BIRDLOC.
Coiiislon Detection
The second safeguard is a collision-
checker for sideways movement.
When you move left, for example,
Birdmove holds the updated BIRD-
LOC position in temporary storage.
Before it moves a bird figure into
the new location, the routine
checks that spot to see which of the
three possible characters is there.
If the desired spot contains a
space, your bird can move left. If
the new spot holds the coop charac-
ter, the old BIRDLOC is restored
and you exit Birdmove without
changing position. If neither char-
acter is found, then the spot must
contain the mate character, so the
routine sets a flag to show that the
bird has reached home, and ends
with the wing-flapping display.
To modify Birdmove for your
own games, just add more compari-
sons to check for as many possibili-
30 Best ot COMPUTE! and Gazette
ties as you need. For example, your
game might check the desired loca-
tion and then branch to appropriate
routines to score if you've hit a
treasure, faint if you've Hit a troll,
rejoice if you've bumped into a
friend, and so on.
The Joystick Flags
The joystick reader at the front of
Birdmove is from the Commodore 64
Programmer's Reference Guide. It
will store flag values in a memory
location which you can then PEEK
to determine movement. In "Props,"
the joystick flag values are in the
cassette buffer, but you could put
them in any safe memory spot. The
right/left flag is stored in location
832, and the up/down flag in 833.
The value in 832 will be 255 for left,
1 for right, and 0 for no movement.
The value in 833 will be 255 for up,
1 for down, and 0 for no movement.
Note that leftover flag values will
remain in the computer's X and Y
registers, though, so if your ML
program goes from this routine to
one that uses indirect addressing,
you should clear the X and Y regis-
ters to 0 to keep things straight.
Programmed characters are
used to make the birds' wings flap.
In lines 62000-63000 of Props, we
first copy the character set from the
ROM chip into RAM memory be-
ginning at location 14336. Then we
create new shapes for characters
90-96 by POKEing new values into
the right places in our RAM charac-
ter set. Character 90 is programmed
to serve as our coop character, and
the other six are a series of bird
shapes.
Each time we call the Bird-
move routine, we also flip to the
next character in this v^ing- flapping
series to create the illusion of move-
ment. To see all the programmed
characters, first RUN the program
and then press the STOP key while
the instructions are displayed. Hold
down the SHIFT key and press
CLR/HOME to blank the screen.
Now type in this line. You'll have to
use abbreviations to fit it all on two
lines.
PRINT"{CLR}"TAB(255): K = 90:FORJ=
1024TO1276STEP42:POKE54272 +
J,l:POKEJ,K:K = K + 1:NEXTJ
Press RETURN and you'll see the
coop character and six bird shapes
in the upper left of the screen.
Flapping From BASIC
Now let's make our bird flap its
wings from BASIC in immediate
mode. Type this line and then press
RETURN:
FORK = ITOlOOOOOiFORJ - 91T096:POKE
1024,J:FORL = 1T030:NEXTL,J,K
The bird should be flapping at top
left. Press STOP when you've seen
enough. While we're at it, let's to
the same job with our ML routine.
To set things up, type this line and
press RETURN.
POKE251,0:POKE252,4:POKE834,91
This puts information in memory
locations which the ML routine
uses to position the bird and start
the wing-flapping character series.
Now type this line and press
RETURN:
FOR) = 1T0100000:S YS49608:FORK =
1T030:NEXTK,J
Using The
Routine's Modules
As before, press STOP when
you've seen enough. The entire
Birdmove routine starts at location
49408 in memory, with its flap por-
tion toward the end of the routine
(49608). At certain points during
Props (the reunion or a pause), we
want the birds to flap their wings
without moving. So we just bypass
the movement parts entirely, start-
ing at location 49608. If all we want
is to place the mate somewhere,
without any moving or flapping,
we can jump in even later, at 49615.
By structuring our ML program in
distinct modules, we're able to get
maximum use out of what we've
written.
Now let's call the whole Bird-
move routine to let our bird fly free.
First, type this line and press
RETURN.
POKE834,91:POKE835,0:POKE836,4:
POKE837,230:POKE838,6:POKE251,
255:POKE252,5
We just positioned the bird and set
limits to keep it on the screen. Now
enter this as one line.
PRINT"{ CLR I ":FORJ - 1024TO2008
STEP41:POKEJ,90:POKEJ + 54272,1:
NEXT:FORJ = lTO100000:SYS49408:
NEXT
You'll see the bird wrap around
the side of the screen when its way
is clear, but stop when it hits a coop
character. The up-and-down move-
ment routine contains no collision-
checker, though, so moving in
those directions will erase any char-
acter you encounter.
Vary The Difficulty With
Delay Loops
Running at full ML speed. Bird-
move is fun to play with, but too
fast to be practical. Props uses a
variable delay loop (pegged to skill
level) to slow things down to a
manageable speed.
Spritemove, the second big ML
routine in Props, handles the sprite
animation, moving the eight pro-
pellers up or down at the correct
speed and twirling them in unison.
Look at lines 2-6 of Props and
you'll see something odd. The
game works by cycling through
these lines, calling the Birdmove
routine over and over with the
statement SYS 49408. But Sprite-
move is called only once {SYS
49152) in line 1, while we're setting
things up. Yet the sprites move con-
tinuously as long as we're playing.
How can we make Spritemove
work all the time without calling it
repeatedly? Easy — just let the com-
puter do it along v«th its other
housekeeping.
Harnessing The
Hardware Interrupt
In addition to executing your pro-
grams, your computer's processor
chip has continual housekeeping to
do like updating timers and scan-
ning the keyboard. But it can do
only one thing at a time. So occa-
sionally the computer stops doing
your work and takes time out for its
own. You never notice these inter-
rupts, because they happen about
60 times every second.
Like Birdmove, the 64's hard-
A'are interrupt rouHne is just anoth-
er ML program, starting at location
59953 ($EA31) in memory. By
changing one pointer (vector), we
can have the computer perform our
ML routine first, then on to do its
housekeeping as usual — 60 times a
second.
Memory locations 788-789
($0314-0315) are specially re-
served to hold the address where
this interrupt routine begins. When
you turn on your 64, it automatical-
ly sticks the normal (default) ad-
dress in these locations. The first
Best ot COMPUTE! and Gazette 31
part of Spritemove just changes this
vector to point the computer to the
beginning of our ML program.
At the end of our ML routine,
we send the computer on to its
normal interrupt program at
$EA31, rather than returning to the
program as we do in a conventional
ML subroutine.
Watch It In Isolation
Such an inlerrupt-driven ML rou-
tine will seem to run independent
of BASIC. To watch Spritemove in
isolation, first RUN Props and press
the STOP key when the props
move. You'll see the blinking cursor
and READY signal, which shows
the computer has quit executing our
BASIC program. We're back in
BASIC immediate mode, but Sprite-
move is still working along with the
interrupts, so our graphics and
sound keep going.
We can do anything we'd nor-
mally do from BASIC, even call
other ML subroutines as we did in
the examples above, but there's a
limit to how far we can take this
technique. Grafting a lengthy ML
routine onto our interrupts will
make those "time-outs" so long
that they slow our BASIC opera-
tions down to a crawl.
To stop Spritemove, first clear
the screen of character graphics by
holding down SHIFT and pressing
CLR/HOME. Now type SYS49152
and press RETURN. The props and
sound should freeze.
To restart the props, move
your cursor up to the same line and
press RETURN again. The interrupt
vector now points to Spritemove
again, and we're back in business.
Spritemove is designed to alter-
nately change and restore the inter-
rupt vector, every time we call the
routine, letting us turn it on or off at
will.
Ttie Sprites Are Still Ttiere
Note that stopping Spritemove
doesn't erase the sprites. If we want
them to disappear at certain points
in Props, we have to disable their
display with the statement POKE
SP-l-21,0. When that's done, the
sprites are all still moving in the
sense that Spritemove keeps chang-
ing their location registers and
shape pointers as always. But none
of this is visible since we've com-
manded the computer not to show
it on the screen.
Compared to the interrupt rou-
tine, the rest of Spritemove is sim-
ple. The BASIC setup portion of
Props sets all eight sprites to fixed
horizontal locations, giving each a
track to run up or down in. Each
prop always flies in the same direc-
tion— one space up or down on the
sprite grid for every execution of
Spritemove at skill level 1.
Each sprite has a register
(memory location) containing its
vertical location. To move the
props, Spritemove increments or
decrements every vertical location
register one or more times, depend-
ing on skill level.
Believe it or not, this is simpler
in ML than in BASIC. Let's say
sprite 1 starts out at vertical location
100. If we start plopping bigger val-
ues into its vertical location register,
sprite 1 will move down the screen.
Safe Increments
Are Assured
In BASIC we'd have to program in a
safeguard to make sure we couldn't
POKE a value larger than 255 into
the register, since that would abort
our program with an ILLEGAL
QUANTITY error.
But ML lacks the error- checking
mechanics of BASIC, and simply
won't let you put a number bigger
than 255 into any memory cell. Try-
ing to increment a register from 255
to 256 will just flip its value back to
0. Increment that register again,
and it'll contain the value of 1, and
so on.
The same thing works in
reverse — decrementing a register
that contains a 0 value will give us
the value of 255. This characteristic
of ML, which might seem a limita-
tion, is used to advantage in Sprite-
move, which just keeps increment-
ing and decrementing the vertical
sprite registers blindly. We know
ML won't let us exceed the safe
0-255 range which, conveniently
enough, the sprites also use for ver-
tical location.
Animating Ttie Propellers
You define a sprite's shape by
pointing it to a block of shape infor-
mation which you've placed in
memory beforehand. To rotate the
props, we just flip them through a
series of related shapes, much as
the birds are made to flap their
wings. Spritemove points all eight
sprites in unison to successive sets
of shape data which was stored
when we set up Props. Since props
are bilaterally symmetrical, we can
save memory space and get the ef-
fect of an eight-position rotation by
flipping them repeatedly through a
series of only four shapes.
Just as the computer looks in a
special place to find the address of
its interrupt routine, Spritemove
checks and changes a special spot
for the current shape pointer, loca-
tion 828 (#033C).
We've used other memory reg-
isters in the cassette buffer to store
things for our ML routines. Loca-
tions 832 and 833 hold values re-
ceived from the joystick, as we've
seen. Location 842 holds the home
flag: The Birdmove routine will
store a value of 1 here if the bird
reaches home; otherwise, the regis-
ter contains a 0.
Passing ML Values
To BASIC
This is an example of how to use
variables in machine language, and
pass information back and forth
from ML to BASIC sections of your
program. In BASIC, of course, we'd
name a variable something like
HOME, and say that HOME = l
when home is reached, making
sure that HOME = 0 at all other
times. But ML doesn't recognize
names — just numbers inside mem-
ory locations. So, in Spritemove we
choose a special memory location
(842) to represent the condition of
our home flag. Then we store a 1
value in 842 as a signal whenever
home is reached.
Line 3 of the BASIC program
uses the PEEK function to check
that same memory location
(HM = 842) for a nonzero value,
branching to the BASIC "home"
subroutine at line 20 if that condi-
tion is satisfied. Once we've per-
formed our home routine, we set
the flag back to 0 in line 24, so that
our bird can get lost again.
Synctironlzlng Sound
And Action
Props also creates its filtered and
ring-modulated sound effects by
passing values from ML to BASIC.
32 Best of COMPUTEI and Gazette
When the bird flies around the
screen, a soft musical tone is heard,
changing constantly in relation to
screen position. We start making
this sound in line 2 by POKEing
voice 1 on. In line 6 we change the
pitch of voice 1 by PEEKing into
location 251 which, you'll recall, is
used by Birdmove to store our
bird's screen location. In this simple
way, we can link the bird's sound
effect to its graphics action.
Voice 2 is always on during the
game, set to the noise waveform to
make a swooshing sound. The ef-
fect of fading in and out is created,
not with the volume control (which
affects all three voices equally), but
with a filter, which we can set to
affect any or all of the voices at a
given time. In line 1002 of Props we
POKE register 54296 with a value
of 47. Besides volume, this register
lets you select what type of filter
you want. So we started with a
value of 15 for maximum volume in
all voices, then added 32 (15 + 32-
47). This turns on bit 5 of the regis-
ter to activate the bandpass filter,
which will cut out all but a narrow
band of frequencies in the tone of
the filtered voice.
Next we have to tell the com-
puter which of the three voices it
should send through the filter. Also
in line 1002, we POKE the value of
66 into register 54295, which sends
voice 2 through the filter and selects
a moderate amount of resonance. (If
you've never played with filter reso-
nance, try editing line 1002 to sub-
stitute the value of 226 instead of 66,
to hear the more pronounced effect
of maximum resonance.)
A Swoosh Is Filtered Noise
Now the filter's ready to use. Pick-
ing the noise waveform for voice 2
gives us a more or less random
mishmash of all audible frequen-
cies to work with. Setting the cutoff
frequency low will pass through a
narrow band of low frequency
tones for a roaring or rumbling
sound, and cut off all other tones. A
high cutoff value gives us a narrow
band of hissing, high-frequency
tones. To make a swooshing sound,
we just change the cutoff frequency
at high speed, from low to high
values.
To tie this sound to the graph-
ics action, we let Spritemove
change the cutoff frequency at ML
speed. At the very end of SPRITE-
MOVE is a little routine that stores
a value into the filter cutoff fre-
quency register. This value is the
same one used to control how
many spaces the sprites move each
1/60 second. So at higher skill lev-
els we add bigger numbers to the
cutoff frequency register, to sweep
the filter from low to high more
rapidly.
As with sprite positioning, we
can increment forever, without
fussing over illegal quantity errors.
What we get is a repeated low-to-
high sweep in the range 0 to 255.
Filtering Voice Three
The echoing synthesizer tones
heard while pausing, or when the
bird's mate changes coops, are pro-
duced by applying similar band-
pass filtering to voice 3. The
technique is the same — we sweep
the filter cutoff frequency upward,
over and over. But instead of noise
we're using a triangular waveform,
ring-modulated by the pitch fre-
quencies of voice 2 (line 51).
The pitch of voice 3 is linked to
the bird's screen position by using
the value found in location 251.
And the pitch frequency of voice 2
is also swept down over and over,
in our familiar 255-to-O range, by
the Spritemove routine.
Unlike the noise waveform,
which contains tones at almost ev-
ery audible frequency, the triangu-
lar waveform is rich in certain
harmonic frequencies and totally
lacking in others. So at certain fre-
quencies the bandpass filter cuts
out just about everything, causing
silence. Adding ring modulation
suppresses the fluty tone we'd oth-
erwise get from a triangle wave,
and adds new harmonics for an
even stranger effect.
A Two-Voice Sound Effect
One final, important difference be-
tween this and the swoosh sound is
in the ADSR (attack/decay/sus-
tain/release) envelope. For the
prop sound, we set voice 2's sustain
value to the maximum of 240 (line
1082), and trigger the ADSR enve-
lope only once at the beginning
(line 11050).
With maximum sustain, the
tone will never fade out naturally —
it only seems to reach silence when
our filter is set to its lowest cutoff
frequencies. For contrast, we trigger
the ADSR envelope for voice 3 ev-
ery time we make the synthesizer
sound, causing the slow, ghostly
fade-out.
But you do fancy filtering with-
out mastering ML. Take a look at
lines 11050-11058, which govern
the animation and sound of wings
flapping during the instruction dis-
play. Here we're controlling the fil-
ter frequency from an entirely
different source.
A Special
Number Generator
Location 54299 (VM + 3) is a very
special register that can be made to
produce four different number se-
quences which are handy for con-
trolling sound. It can generate a 0-
to-255 sweep like we've used up to
now. Or it can sweep from 0 up to
255 and back down again. It can
generate random numbers, and can
also flip back and forth from 0 to
255 at varying rates.
You choose zvhich number se-
quence you want by selecting one
of the four waveforms for voice 3.
You control the rate at which the
numbers change within that se-
quence by setting the frequency of
voice 3.
For a convincing wing-flap-
ping sound, we want the filter to
sweep up and then back down
again. So we select the up-and-
down number sequence by setting
voice 3 to a value of 16 in line
11050. To time it to the beating of
our birds' wings, we just fiddle with
various pitch frequency values for
voice 3 (H3 and L3) until we get it
right. Note that you don't want to
hear voice 3 — you're only using its
pitch values to control the output of
voice 2. So W3 is POKEd to 16,
which selects the triangle wave-
form without turning on the gate bit
which would make the voice audi-
ble (that is, by POKEing W3 to 17).
Once you have Props working,
you can learn a lot about the 64's
SID chip just by changing the val-
ues used in this and other sound
sections. ®
Best of COMPUTE! and Gazette 33
Powerball
illiom Chin, Editorial Programmer
This outstanding arcade-style game's
moving obstacles, special features,
and different game screens will keep
you thinking and moving fast. For the
Commodore 64. A joystick is required.
Not your ordinary version of Break-
out, "Powerball" is an addictive,
multifaceted arcade-style game with
new features such as capsules and
slivers — and ten different screens to
master.
Each Powerball screen is popu-
lated by its own configuration of
slivers, capsules, and bricks. After a
few games you'll begin to develop
strategies for each of the screens. As
in Breakout, the object of the game
is to destroy a series of walls brick
by brick. In Powerball, this can be
done in two ways — you may use
your paddle to bounce balls against
the wall, and you may shoot the
wall down after catching a fire cap-
sule. Unlike Breakout, you must
quickly observe the characteristics
of each type of screen object to earn
high scores.
To play Powerball, enter LOAD
"POWERBALL",8,l. Start the game
with SYS 49152.
When the game begins, you'll
see a paddle in the center of the
screen near the bottom. Below the
paddle you'll see an indication of
the number of paddles remaining,
your current score, and the high
score of the current series of games.
You begin each game with four
paddles available (only one paddle
can be active at any given time,
however). Use a joystick in port 2 to
move the paddle left and right.
Press the fire button to release the
ball and begin play.
Blasting Bricks
Your main weapon against the
bricks is the bouncing ball. Use your
paddle to keep the ball in motion.
You'll lose a paddle whenever a ball
gets past you to the bottom of the
screen. The game ends when all
paddles have been lost. When all
breakable bricks on the current level
have been eliminated, you advance
to the next level. When you lose all
your paddles, you are not automati-
cally dumped back to the first level.
Instead, you can press the fire but-
ton to start a new game at the cur-
rent level. You can press SHIFT at
any time to pause the game. (Use
SHIFT-LOCK for longer pauses.)
Bricks come in three varieties:
soft, hard, and sohd. Soft bricks are
green and are destroyed by being
shot or by being hit by a ball. Hard
bricks start out gray and change
color each time they are hit. They
must be turned green before they
can be destroyed. Solid bricks are
white. They can be destroyed only
by a power ball. However, it's not
necessary to destroy all the white
bricks to advance to the next round.
Slivers And Capsules
Slivers and capsules are the special
features that distingush Powerball
from most other games of its type.
Slivers are small flashing objects
that change color as they float
around the screen. Balls bounce off
the slivers. This can be helpful at
times (to deflect a descending ball),
but, in general, slivers do more
damage than good. Touching a sliv-
er with your paddle sends the sliver
to the top of the screen where it is
least dangerous. There is no way to
permanently destroy a sliver.
Capsules are the same shape as
your paddle. They appear at ran-
dom times and at random locations
near the top of the screen, and then
descend vertically down the screen.
Touching a capsule with your pad-
dle gives the paddle a special ability
depending on the color of the cap-
sule. (If you're using a monochrome
display, each type of capsule also
has a distinguishing label.) Below is
a list of the capsule types and their
corresponding powers:
Label
Color
Power
S
yellow
slows down all balls
C
green
paddle catches ball
L
blue
paddle becomes longer
F
red
paddle fires
P
purple
ball becomes power ball
3
It. blue
ball splits into three balls
•
gray
extra paddle
N
orange
go to next screen
A standard paddle with no
special powers is white. When a
capsule is touched, the paddle takes
on the color of the capsule to indi-
cate its current power. A paddle can
have only one power at a time; the
previous power is lost each time a
new capsule is touched. The special
power is also canceled when the
paddle is lost.
A few notes about the powers:
When you've caught the green C
capsule, your paddle will capture
the ball so that you can reposition
the paddle for an accurate shot.
Press fire to release the ball. If you
wait too long (about three seconds),
the ball will be released automati-
cally. The purple P capsule turns
the balls into power balls, which
destroy all types of bricks. After
you capture a red F capsule, your
paddle has the power to fire darts at
the bricks as well as to deflect the
ball. Press the fire button to shoot
the darts. The light blue 3 capsule
splits the ball into three individual
balls (but only once each time one
of these capsules is touched — you'll
never get more than three balls).
The split balls behave the same as
the original ball, except that you
don't lose a paddle until all three of
the split balls have slipped past to
the bottom of the screen. The gray *
capsule adds an extra paddle to
your total when touched. Touching
an orange N capsule takes you to
the next level, regardless of how
many bricks remain on the current
level. The gray * and the orange N
capsules are rare. ®
34 Best of COMPUTE! and Gazette
Laser Beam
This fast-paced arcade game is writ-
ten entirely in machine language and
challenges the quickest reflexes. A
joystick is required.
"Laser Beam" is a fast-action
arcade-style game with a simple
premise — you score by moving.
The more you move, the more you
score. The object is to avoid several
bouncing balls until just the right
moment when you must grab them
and stuff them into a basket.
To get started, plug a joystick
into port 2 and type LOAD'XASER
BEAM",8,1. Then type SYS 49152
and press RETURN.
The Highlight Zone
Move the joystick up or down to
select the difficulty level — 0 is the
slowest and 9 is the fastest (in fact,
9 is so fast that it's almost unplay-
able). The game starts when you
press the fire button.
Immediately you'll see seven
colored bails bouncing around the
screen. At the left is a highlighted
"safe zone" occupied by a small
stick figure — that's you. By moving
the joystick, you can maneuver
your figure around the screen. But if
you venture out of the safe zone
and bump into a bouncing ball,
you're zapped. (You get three lives
per game, as indicated by the fig-
ures at the bottom of the screen.)
Your goal is to render the balls
harmless, grab them one by one,
and drop them into the basket in
the lower-right corner. To make a
ball safe to touch, you have to shoot
it with the laser gun. The laser is
visible along the edge of the screen.
To control it, first you must move
your figure into the uppermost cor-
ner of the safe zone. The laser gun is
Mike Greenfield
Version by Kevin Mykytyn
under your control only when your
figure is at this spot. Pushing the
joystick to the right moves the laser
clockwise around the edge of the
screen, and pushing the joystick to
the left moves the laser counter-
clockwise around the screen. Press
the fire button to activate the beam.
If you push the joystick in any other
direction, you'll move your figure
away from the top of the safe zone,
and the laser gun will no longer be
under your control.
Now, you can't shoot just any
bouncing ball with the laser to
make it safe to grab. You have to
shoot the ball which matches the
border color of the screen. As soon
as you hit the ball, it turns white.
Then you can maneuver your figure
out of the safe zone, grab the white
ball by touching it, carry it to the
basket, and drop it in by pressing
the fire button. Afterward you must
scurry back to the safe zone before
a collision with another ball.
For example, let's say the bor-
der color is red. First you move your
figure to the top of the safe zone to
take control of the laser gun. Next
you push the joystick right or left to
aim the laser at the red ball. When
you have a clear shot, press the fire
button to shoot the beam. If you
score a hit, the red ball turns white.
Then you can push the joystick in
another direction to move your fig-
ure out of the safe zone. Grab the
ball, stuff it into the basket by
pressing the fire button, and make
your escape — all while avoiding
the other bouncing balls, of course.
If you succeed, the border color
changes to correspond to one of the
remaining balls.
You continue with the process
until all the balls are safely dropped
into the basket. Then another round
begins.
Bouncing Chaos
Sounds simple, right? Well, it's not.
There are a few complications. Sup-
pose you fire the laser and hit a
bouncing ball that doesn't match the
border color. It turns white, too. But
it isn't safe to grab. If you touch it,
you're zapped. This becomes a real
problem when you accidentally
shoot several of the balls and turn
them white. Only one of them is
safe, and you have to remember
which one. It's not easy when three
or more white balls are bopping all
over the place.
There is an incentive for creat-
ing this chaos, however. The num-
ber of points you get for dropping a
ball in the basket doubles for each
white ball on the screen. If the only
white ball is the one you're grab-
bing, you get only 5 points. If a
second ball is white, you get 10
points; if a third ball is white, you
get 20 points; and so on. If all seven
balls are white when you drop the
first one into the basket, you score
320 points.
Another complication is that
your safe zone doesn't always stay
safe for very long. After you shoot
the ball that matches the border
color, it begins shrinking from the
bottom up. If you don't hurry out,
you'll get zapped.
And there's yet another reason
to move quickly: If you finish a
round by dropping every ball into
the basket before the horizontal bar
at the bottom of the screen disap-
pears, you get a 50-point bonus.
If all this action causes your
brain to momentarily suffer a sys-
tem crash, you can freeze every-
thing by pressing and holding the
SHIFT key. Press SHIFT LOCK to
freeze the game for extended peri-
ods. Release SHIFT to resume play.
Best of COMPUTE! and Gazette 35
YOU FOUND IT!
A Reliable Source for
Your Computer Supplies.
At Budget— frienrff)r PrJcesI
ORDERING IS FAST AND EASY.,.
AND TOLL FREE!
f^e^ 'i We're as close os the phone.
caifor FREE CATALOG!
Innovative products to maximize the
efficiency of your computer operolion.
GUAMNTHD: * Quality -k Compatibility
* Your Personal Satisfaction
3M
\t*P^
Highland diskettes
Mani]tac;liiti'd to moGi your needs
Econoniicol Diskette backed by 3M's
tepulaliori for quaiily and reliobiliiy
^QC SV*" DSDD
" ' Sold lO/Box
Eaet* Minimufn SO D.iki
SHCMi nriciNC on th( run imi of jm hmcnitk mioiiI
-■--'■"'-^\ 3M Formatted
V:!^.r.J Doto Cartrldgat
Sono noa'ly on hour o' more ol lor
moiling tima wi'h 3M'i new family
of for molted data cortndgei
olphomot^^, • dehnmot
* kappomaf
' gammomot
Coll lof Price t Compolibilitv
•^
I
J
Min. Ord«r $25.00. Add 10^ for less Ihon SO disks
$& H: Conlinentol USA t4.00. 1st 100 or ftwtr
disks, 13.00. »och succteding 100 v fewer. Foreign
Orders. APO/FPO. please call. Ml Residents odd 4%
tai. Prices subject to chonge. Hours, 8:30
A.M.-7:0OP-M-n.
II Precision Data Products'"
PO BaifllA''. (iiuid Kipids. Ml IVMH
Cub SovMilnto (6l6)*i2 M5'? • KAX 1616I«2-«U
toll l-fH Ofdci Lino Ml l'B«)'fi12-24U
II loll Ki« Order I mti Ouiiide Ml 1 800 2)IOO:a
$
WIN $
THE LOTTO
With Your Computer!
Forget random numbers. This program
for home computers does an actual
anatyals of the past winning numbers.
This amazing program will qulckln pro-
vide you with all the data you need to
predict which numbers will likely
come up In subsequent drawings. All
consistent lottery winners use some
kind of system based on the past win-
ners. Using the real power of your com-
puter gives you a definite edge. It's
menu driven and all you do Is add the
latest winners each week and the pro-
gram does the rest In seconds. On
screen or printer It shows hot and cold
numbers, frequency, groups, sums-of-
dlgits, odd/even, wheels numbers and
more. No thick manual to read. It even
has a bullf-ln tutorial.
Ask your software dealer or call or
write:
SOFT-BYTE
P.O. Bom 556 F. Park
Dayton, Ohio 45405
(513)233-2200
THE LOTTO PROGRAM is designed for all
6 & 7 draw loilo games (up io 49 numbers)'
DON'T PLAY LOTTO WITHOUT ITl
APPLE &M/S DOS IBM 24.95
COMMODORE & ATARI 21.95
TRS-SO & MOD ill. IV 21 .95
MACINTOSH (super vcnton) 29.95
Pleaec add 12.00 ehlpplng/
handling. Faet aefvlce on
charge caida. P
Bagdad
Bryan Files
Beware of the evil genies determined
to knock you from your magic carpet.
With a little strategy and skill, you
can trap them in bottles — but work
quickly before they re-emerge. A jay-
stick is required.
Flying through Bagdad on your
magic carpet, you're suddenly ac-
costed by some rug-riding evil ge-
nies bent on knocking you off —
literally and figuratively. Your only
defense is to knock them off first,
and this takes some tricky maneu-
vering. First, you must trap each
genie in a bottle. Then collect the
bottles before the genies have a
chance to escape. If you fail to col-
lect a bottle in time, the lid opens
and your battle resumes.
The Calm Before The Storm
Ridding the city of enemy genies
gives you a brief rest before the next
wave of more numerous and deter-
mined genies. You begin with three
lives, with a new life added for
every 5000 points you earn. Only
white genies are encountered dur-
ing the first nine waves, but the
tenth wave brings a new, more ag-
gressive menace — the blue genies.
If you manage to reach the four-
teenth level, white, blue, and the
dreaded purple genies emerge for a
fast and furious battle.
Flying The Magic Carpet
After loading and running "Bag-
dad," push the joystick, which
should be in port 2, forward to start
the game. Move the joystick left or
right to move your genie corre-
spondingly. Press the fire button to
fly up, and release it to allow gravi-
ty to pull you down. Hovering re-
quires alternately pressing and
releasing the fire button. If you
reach the top of the screen, your
genie will bounce, however, he will
wrap around the screen at the left
and right edges.
Strategic positioning is ex-
tremely important. When two ge-
nies hit at the same level, they
bounce off each other. You have to
use your carpet to hit the other
genies. If you're at a higher level
when you collide, the edge of your
carpet knocks the genie off his rug.
The falling genie then crawls back
into his bottle, which falls to the
ground (or to one of the intermedi-
ate levels).
Once in the bottle, the evil ge-
nie begins to work his way out
again. The only way to get rid of
him is to fly down and pick up the
bottle.
If you hit a genie when you're
at a lower level, you're the loser.
You don't have a bottle, you simply
lose one of your genies. You'll rein-
carnate at the bottom of the screen,
providing you have at least one life
remaining. During the three or four
seconds the genie is flashing, he
cannot be defeated by enemies.
However, if no genies are nearby,
you can terminate the flashing and
begin play by moving the joystick.©
36 Best of COMPUTEI and Gazette
Arcade Baseball
Here's a computerized version of the
once-popularmechanical baseball
game found in the pre-electronic ar-
cades. The on/y difference is you don't
need any dimes or quarters to play.
An exciting one- or two-player game.
Spring training is over and baseball
season is under way. Here's a
chance to do some swinging and
pitching against a friend — or your
Commodore 64. "Arcade Baseball"
is modeled after the mechanical
baseball arcade game that was pop-
ular before computerized games
dominated the scene. But this com-
puter game offers a few options that
the mechanical versions did not:
You can choose to practice or play,
and you can select an opponent:
another person or your computer.
A Few Choices
To play the game, load and run
Arcade Baseball. First you're
prompted to choose Practice (fl) or
Play {f7). In practice mode, 20
pitches — a random mix of fastballs,
changeups, curves, and sliders —
are thrown so you can practice hit-
ting. (To change the number of
pitches thrown, change the value of
RM in line 740.) No runners are
displayed, and outs and runs do not
accumulate. After all the pitches are
thrown, you're asked again to select
Practice or Play.
In Play mode, you're asked to
select a one- or two-player game.
Press the 1 or 2 key. If you wish to
play the computer, select the one-
Kevin Mykytyn and Mark Tuttle
player game. Now you're ready to
begin.
The screen is divided into three
sections. On the left is the playing
field. Along the top of the field is a
row of black holes. A batted ball
will land in one of these holes, and
each is marked with a result {single,
double, triple, or out). To hit a
home run, the ball must pass over
the center of the rectangular ramp
near the center of the field. (The
crowd loves a home run and cheers
when either team hits one.) At the
bottom of the field is a specially
designed bat.
The upper right comer of the
screen is the scoreboard, which
contains the inning, number of
strikes, outs, and the current score.
Players are represented as Visitor
and Home. In the square below the
scoreboard is a display of the base-
ball diamond, designed to show
which bases are occupied by the
team at bat.
Play Balll
You must first choose a one- or
two-player game. The one-player
version — like the original arcade
game — lasts for three outs. Your
objective as batter is to score as
many runs as possible before reach-
ing three outs. The computer, as
pitcher, randomly selects the type
of pitch: fast ball, changeup (a slow
moving pitch), curve (which breaks
away, to the right of the plate), or
slider (which breaks in, to the left of
the plate). Swing at a pitch by
pressing the space bar. This moves
the bat left to right. Once the bat is
released, you no longer have con-
trol of it, so you must time the
release of the bat to meet the
pitched ball. If the ball passes un-
touched, it counts as a strike.
Because different pitches cause
the ball to travel at different speeds
and in some cases change direc-
tions, timing the release of the bat is
crucial to good hitting. The bat is
designed as a half circle to allow
you control of the angle of the bat-
ted ball. There's no such thing as a
foul ball in Arcade Baseball; you
can bounce the ball off the sides of
the field.
When you get a hit, you'll see
any movements on the base paths at
the lower right of the screen. If the
hit is a single, the batter advances to
first base, and any other base run-
ners move up one base. A double
moves all runners up two bases, a
triple three bases. A run scored is
indicated by a chiming tone and an
update on the scoreboard.
The two-player version offers
more variety:
1. The game lasts for three in-
nings. If the score is tied after three
innings, play continues until one
player wins. (The home team al-
ways gets to bat last, regardless of
the score.) The visiting team is blue,
the home team red.
2. You pitch as well as hit. Press
one of the function keys to deliver a
pitch: fl — fastball; f3 — changeup;
f5 — slider; and f7 — curveball. 6
Best of COMPUTEl and Gazelle 37
Eagles And Gators
Featuring 16 sprites on a split screen,
unique sound effects, and realistic
animation, this two-player action
game is programmed entirely in ma-
chine language. It's written for the
Commodore 64, and requires at least
one joystick.
In "Eagles and Gators," an intense
two-player action game, even the
title screen is animated. Though the
Commodore 64 is ordinarily limited
to 8 sprites, this game displays 16
moving sprites at all times and in-
cludes highly realistic animation as
well.
The game begins with an ani-
mated title screen, asking whether
you want to read the game instruc-
tions. Press Y to view the instruc-
tion screen or N to skip it. Next,
you're shown the game screen and
are prompted to choose one of the
nine skill levels. If you've never
played the game before, you'll
probably want to press 1 to choose
the easiest level.
Flyers Against Swimmers
When play begins, the screen is split
into upper and lower color zones:
sky-blue for the eight high-flying
eagles and murky black for the eight
gators swimming below. Each play-
er controls a group of eight sprites.
The game is written to be played
with two joysticks, but you can sub-
stitute keypresses to control the ga-
tors, normally controlled by joystick
1. Press the CTRL key to move left,
the 2 key to move right, and the
space bar to fire.
Your sprites are in constant,
realistic motion, flying or swim-
ming up and down in their zones,
rebounding when they hit the bor-
der between the two worlds. The
flashing colored sprite in your
group is the one controlled by your
joystick. To switch control to a dif-
ferent sprite, move left or right.
The goal of the game is to ex-
Philip I. Nelson, Assistant Editor
pand your zone and push your op-
ponents off the screen. This is done
by convincing your creatures to
push against the sky/water border.
Press the fire button just as your
flashing eagle or gator bumps the
border, and it will "clamp" on and
start to shove. Whenever you clamp
successfully, your opponent's
screen flashes red, and all of your
creatures thrash momentarily with
excitement.
Your zone expands whenever
you have more sprites pushing than
your opponent, and the game ends
when one side or the other takes
over the entire screen. That sounds
simple, but it takes precise timing to
clamp just one sprite. If you press
the fire button at the wrong time,
your sprite moves away from the
border, regardless of its initial di-
rection. If you press the fire button
when your flashing sprite's already
stuck to the border, it bounces back
to the farthest end of your zone.
Your adversary can also un-
clamp one of your creatures by
clamping one of his or her creatures
directly across the border from
yours. The ability to unclamp an
opponent's creatures at any time
adds an extra element of strategy
and makes it possible to turn the
tables on your opponent even
when defeat seems almost certain.
The game is designed to reward
concentration and careful play, and
to discourage wild tactics such as
holding the fire button down con-
stantly. At best, you'll prevent your
creatures from approaching the
border; at worst, you'll inadvertent-
ly unclamp those from your side
who are already pushing.
When you win a game, the
screen clears to your color, and a
joyful, double-sized sprite from the
winning side performs a victory
dance across the screen. At this
stage you can pick a new skill level
for the next round or quit by press-
ing the Q key. After you exit, the
game can be restarted by typing
SYS 16384 and pressing RETURN.
To stop in midplay, press RUN/
STOP-RESTORE.
Displaying 16 Sprites
space doesn't permit a detailed ex-
planation of every routine in this
program, but you may be curious
about how to display more than
eight sprites at a time, something
often mentioned, but rarely seen in
action. In order to understand how
it's done, you'll need to know a
little about raster displays.
Your TV or monitor makes a
picture by scanning its screen with
a moving electron beam called a
raster. This is done line by line,
from top to bottom, 60 times a sec-
ond. The visible portion of a TV
picture is made up of 200 raster
lines, numbered from 50 at the top
through 249 at the bottom. The
same numbering scheme is used for
locating sprites vertically on the
screen, so raster line 100, for ex-
ample, matches up with sprite ver-
tical location 100. This correspon-
dence between raster lines and
sprite positions greatly simplifies
the task of creating more than the
usual number of sprites.
The Commodore 64 keeps track
of the raster's vertical location in a
special memory location (register)
at 53266 ($D012). BASIC is too
slow to make much use of it, but
machine language (ML) is fast
enough to let us check this register
repeatedly and monitor the posi-
tion of the raster beam as it scans
down the screen. This information
is used to create a split screen as
well as to double the usual number
of sprites.
Split Screens
To make the two-color split screen,
we first establish an arbitrary
"split" point somewhere near the
midpoint of the screen (say, at line
100) and then repeatedly compare
38 Best of COMPUTE! and Gazette
the raster's location to that value.
When the raster value is less, we
know it's above the split, so we
color the screen cyan to create the
sky zone. When the raster value is
greater, that means it has dipped
below the split point, so we color
the screen black for the water zone.
Remember, moving downward on
the screen increases the raster (or
sprite) vertical location value. By
changing the border color along
with the screen background color,
we can make the split extend the
full width of the screen for height-
ened realism.
The same sort of monitoring
makes it possible to display 16
sprites. When the raster's above the
split, we display all of the 64's 8
sprites at vertical locations in the
upper color zone. When it drops
below the split, we display the
same 8 sprites at locations in the
lower zone. The two sets of sprites
are never actually displayed at the
same time. The program just changes
their locations so fast that your eye
sees 16 solid figures, without a trace
of flicker.
Shadow Registers
If you stopped at this point, you'd
have two identical groups of eight
sprites — upper and lower — sitting
motionless on a split screen. Nice,
but boring. To exploit the effect in a
game, we want the two sprite
groups to look different and move
independently. Unfortunately, the
Commodore 64 still has only eight
sets of sprite control registers for
handling the sprites' shapes, colors,
and so on. Remember, we're just
flipping the same group of eight
sprites back and forth at very high
speed between different vertical lo-
cations. Thus, top sprite 1 doesn't
just look the same as bottom sprite
1; it is the same sprite. The minute
you change the shape or color of
any sprite in the upper group, its
lower twin immediately follows
suit, and vice versa.
What we really need to write
this game is 16 sets of sprite control
registers. Commodore didn't de-
sign 16 sprites for the 64, but you
can achieve much the same effect
through software. Here's an outline
of how it's done in this program.
First, we set aside some free memo-
ry to use as "shadow" registers in
place of the actual sprite control
registers. Since none of the eagle or
gator sprites move horizontally, we
don't need to duplicate the 8 hori-
zontal position registers. However,
every sprite must be able to move
freely up or down and change its
shape and color at any time. Thus,
for each group of 8 sprites we need
8 registers for vertical position, 8 for
color, and 8 more to hold shape
data pointers. Three sets of 8 make
24: double that for the second set of
8 sprites, and you now have 48
shadow registers.
To make each sprite appear in
the correct spot, we must transfer
the contents of each shadow regis-
ter into the corresponding control
register at precisely the right in-
stant. When the raster beam is in
the upper portion of the screen,
we'll take data from the eagles' set
of shadow registers and store it in
the actual sprite control registers.
When the raster creeps down below
the split, we'll fetch gator data in-
stead and plug that into the control
registers.
Of course, it's not necessary to
do this on a two-color split screen.
This particular program changes
screen colors at the split point to
accentuate the division between
sides. But in another application,
you might prefer to leave out the
color changing code. The split loca-
tion is just an invisible reference
point that tells you when it's time to
flip the sprites from one zone into
the other.
Coasting On The Interrupt
Expressed in this simple, schematic
form, the job of displaying 16
sprites sounds quite simple. When
the raster beam is above the mid-
point, make the sprites appear in
the upper area. When it's below the
split, move them down into the
lower area and give them new
shapes and colors. The process is
uncomplicated in theory. But don't
bother trying to do this in BASIC,
which is many times too slow to
read the raster's position accurate-
ly. This program uses an interrupt-
driven routine to manage the 16-
sprite effect. Although interrupt
handling goes beyond the scope of
this article, the technique essential-
ly wedges our custom sprite display
routines into the computer's oper-
ating system along with its normal
hardware-servicing routines, which
do background tasks such as scan-
ning the computer's keyboard.
Conveniently, the interrupt-driven
routine is executed 60 times per
second, exactly the same frequency
at which the screen is redrawn. As a
result, the sprite display and color
split are quite stable.
The advantage of driving an
ML routine on the hardware inter-
rupt is that it becomes completely
automatic. Sixty times every sec-
ond, the computer executes your
custom routine along with its own
housekeeping routines. An inter-
rupt-driven routine seems to coast
along all by itself, without slowing
down other program events. In ef-
fect, we've enhanced the 64 by add-
ing the ability to display 16 sprites,
with the option of a two-color split
screen. Because the custom routines
operate in the background, the
shadow sprite control registers
seem to work exactiy like the actual
control registers. We can change
the color, shape, or position of any
of our 16 sprites by plugging differ-
ent values into their shadow control
registers. To move our border up or
down, we just change the value for
our split point, and everything else
follows accordingly.
The price you pay for these new
features is that the sprites can't leave
their respective zones. If you try to
move an eagle sprite down into the
gator zone, the custom display rou-
tine automatically gives it a gator
shape and color, and the sky is minus
one eagle. The same thing happens
in reverse if you move a gator into
the upper zone. If you move any
sprite so that it overlaps the border,
you get a weird hybrid creature with
an eagle-shaped upper body and a
gator tail. It's easy to forget because
the shapes look so real, but the 64
still has only 8 sprites built into hard-
ware. Using similar techniques, it's
possible to display as many as 64
sprites on the screen at once. All you
need to do is divide the screen into
additional zones, add extra shadow
registers, and modify the display
routines to handle them. However,
the same general rules apply. Each
group of sprites is confined to its own
zone, and you may not have more
than 8 sprites occupying the same
screen line. C
Best of COMPUTE! and Gozette 39
\ READY-TO-USE
mum ai^PHics
W^ DISKS
*octinyi G£OS iftCTii T»rd ol gang ffuDU^ me toH jnd eiptnw o(
i:cnvtft>r^o(f*i giapfucs (O thf GEOS tofma' Hftp jfT Onki oT
OWjll'W. 7^)nitithd(Ulirja«rugf otlfiegrEa«OSopet«ng
lyslemi CfdtM wfi 0£0S (o< GEOS, ejcn or l^«e tliWi piDviar
d IfifOion gf giaprnts Hi* wiU inWr rW fjr lantj me iwaWI
OBKMrr I i^ion«]|
Hi)lKWy\ t GEOW« Tipi I GEOpam lips ?
d^^vw Goodm j USM^I
Miftic* Siud I
DSWirr 3 IwtKTii jnd wmgi]
PORSCHE %9 f* Prurrom
InLi/fln Ninjpon'7
DSMirrimuxtnll
unlf Goyi J (Xah/BotHi/nt
CM jna Pmprn looli I
4,'
LnirOuy^i
GEOP*" Iipi 1
OC-JAlllHKM
WdrtHtiMI
Foocfclult I
Spiwig/Summt* uufr
M»r-^-fiKe Oialung Equip Vrhcln i ^-
Banncn 1 f Kmtfun iyniOoli IMe \JW)(ren I 7
Lmif WdfTifr J Mourn I
DBKFOMtS (5 iXttiffK. W**. lomv pkB i n-My'o-P™" "t"™ I
INSmxnONS UfrOPapc CWwtyUNfp
BttHi'wn 1 \mrrtay Fo(m EUr* Oppou Foini
BUf*tom 2 BUrttomi J OEOpart I(K I
Bwnklcxm 4 BUrttlbnn h
MUSHCTT (ciTJK pfDinjicrul-locliing ^rm miAK:)
Muii-Kir mto ftdoo Tiflr ftano Staff
MuifJtB Sirglt Tflr Single Sufl
Uigc Immjnwnc Sample Srvn
To Order,
Send S8.S0 for each disk (U.S. Funds)
ICnccli cr U O orHyl llbingn ottXt Md II 7S pn dnkl
TO: Those Designers
3330 Lewis Avenue. Signal Hill. CA 90807
Presents...
EXPLODE!
and
On Target
Disk
Drive
Alignment
Kit
FXPL DDE ''^^ ■ '^EW DIMENSION ol POWER 10 rour
^"' ^*"'^ 'C-W. C-1W. Sx *4 ino tm (WW M-C,
OPtODEI It ( ConvanwTI is UHcartril»B«,CXPLOOEI oill nol InMr-
ttnwiiri program loading or Opti-lliont EXPlOOei »n M Ian i>Mt
(II Irmai Hars ii a lilt ot taaiurs) you xiil Tir<a in EXPtOMl
(t) A F*srLOADilnHM%comD«iiWe(«oni iniarterannih running
or moil programs} arid over ^iOO% ■ana' loading
(!] AMI -B£S SCREEN DUMP mth EULL B' By H' prinloul in TRUE
ORAV SCALE, fall ie colon ira praiarlao ai tnidai ol gray!
(3) Allowi YOU TO SAVE a HI-R£S SCREEN loDISK aiaPCMFILE
(«) A LOAD a fiE-DISPLAV FEATURE lor ALL HI-RES SCREEN
FltES
(M A RESET BUTTON. • UTILITY DISK. DOS wtOg*. TEXT dump
prtniai. UN-NEW command, ano many irnfly Dif»r iMiurw'
(B) WORKS WITH C B M prinltra (aiupl lUe and a02) Will (Mo
won -iTh EPSON & C-ITOH Iyp« ana molt CLONES ol (II UK
■bova |PI«a» coniuLr your manual!
ONLVfM.M' liSOS/H COD'iaddt3 00(cr>caiiaU.S onlyllLL
(M (00 S« UMt Ui (EXPLOOB cirriH ■ go day mrrantyl.
'In M mod* only.
On
Tiji-gaf Fail. Eaiy louaa. Accuiawand Mil oliii lrH>-
lulgCl paniiv* II tnoaa word! (>MC')M your laaa ol
ALIGNMENT PACKAGE Iw your IMO-41 or 1571 driva man read onl
OnTarBVl will alio* you lops^oim accurals dnhdnvaalignrrLenii in
30 mint or lau Trie ooncvpl la aimpla' Raad ine oulpul 0' your dilil
drlfH l>ud II you can ae* ihaT outpul you would hno* wnatl>*r
yDU'ra in inemiddleolai'aclior nolis al ignsd or not' On Tat^ will
do 11^11 lor you without a compulaii
httn I wnal you gat anan you buy Iha On Tar^d AHpnmtnl KH.
|1) * PRECISION ALIGNMENT METER
(2) A DISK wjin int (ALIGNMENT STANOARO) on on* luM and
(OPTIONAL un-prolactad pnoGRAMSl on tlia ollwf aida
(3) ALARGE. HEAW 7 PAQE. lully illuitratsd manual, with ( TIPS •
HINTS p*B«
|«) On* amati lumpar cabM inO a FULL 1 VEAH WAHRANTYi Two
vanKKii are aval labia (A) For Iha IMIMi only 1orSas.M or(B) loi
Itw 1S4D-41 and tS71 ID' only KU.OO ■ II SOSiX lunta ruin apply
haraaa lor orda^ing EXPt-OOEi}
To Order: """The SomtGroup
(31?) 851-1867 Mni« f-U-BOXlll
f^%:^\,l,:^'L"^ Montgomery, IL.ciui
Face-Off
Kevin Mykytyn and Mark Tuttle
Do you like fast action and competi-
tion? Whether you play against a
friend or your computer, this colorful
simulation of Air Hockey offers both.
For the Commodore 64 and 128 (in 64
mode). A joystick is required (two joy-
sticks for two-player game).
If you've played Air Hockey, you
already know how to play "Face-
Off." Based on ice hockey. Air
Hockey pits two players against
each other, each trying to shoot a
puck into his opponent's goal while
defending his own goal. A center
line splits the playfield. Neither
player is allowed to cross this line.
The object of the game is simple:
The first player to score five goals
wins.
To play the game, load it and
type RUN. You'll see a message
(READING DATA — PLEASE
WAIT) and after a brief pause,
you'll see a prompt, 1 OR 2 PLAY-
ERS. Press 1 or 2 (it's not necessary
to press RETURN). The one-player
game pits you against your com-
puter; the two-player game is for
two human opponents and requires
two joysticks.
Next, you're prompted to se-
lect the speed (1-3). Speed 1 is the
slowest and 3 is the fastest. (It is
suggested that you play your first
game at the slowest speed, al-
though speed 2 is probably the one
you'll choose after playing a few
times.) If you selected a two-player
option, the game begins after
you've selected a speed. If you
chose the one-player option, there's
one more prompt to answer: Skill
Level (1-9). This determines the in-
telligence of the computer-con-
trolled player. If you choose 1, the
computer plays a pretty easy game.
At 9, it's very wily. With a speed of
3 and a skill level of 9, the computer
is next to impossible to beat.
When the game begins, you
see a red puck, a cyan player on the
left, and a yellow player on the
right. The cyan player controls the
puck to start. Contact with the puck
starts the game. (Notice that the
puck gradually slows down if it's
not hit.) After each goal scored, the
player scored against gets control.
(You can knock the puck into your
own goal, which awards a point to
your opponent.) A total of nine
pucks are placed per game. If you
wish to change the number of
pucks, change the value in line 510.
One Player Or Two?
When playing against the com-
puter, plug a joystick into port 1.
You control the yellow player, on
the right. You can move anywhere
up to the center line. (At slower
speeds, one strategy is to play along
the center line, like rushing the net
in tennis. This keeps the puck in the
computer player's territory most of
the time if you can react quickly
enough.) Current scores for each
player are posted at the top of the
screen. After nine pucks are used,
the game is over. You're then
prompted to press the fire button to
play again, then to press up on the
joystick to change play options or
down to play with those of the pre-
vious game.
The two-player game has the
same rules. The cyan player, on the
left, must use a joystick plugged
into port 2.
40 Best o( COMPUTEI and Gazette
Space Arena
Bryan Files
This engaging two-player game, which
could have been titled "Indirect
Aggression" for its unique design,
features superior graphics and play-
ability. For the Commodore 64 and
128 (in 64 mode). Two joysticks are
required.
In a distant galaxy, a fierce war
between two great empires has
reached a stalemate. The cost to
both civilizations has been high
with no gain to either side. With the
assistance of the Timelords, the two
sides have agreed to settle the dis-
pute in a controlled environment —
a Space Arena.
Enclosed in this arena are four
asteroids and a ship representing
each side. Both ships are equipped
with photon blasters, which have
the ability to push objects without
damaging them. A ship is de-
stroyed only by a collision with an
asteroid. The highest score within a
given time determines the victor.
One point is given each time a pilot
hits the opposing ship with a pho-
ton blast. If the enemy's ship is
destroyed by running into an aster-
oid, 20 points are awarded.
In "Space Arena," two people
compete with their joystick-
controlled ships. The movement is
much like the classic arcade game
Asteroids. Rotate the ship by mov-
ing the joystick left or right. Push
the joystick forward to activate the
ship's thrusters, and press the fire
button to release a photon blast.
Remember that you have no brakes;
to slow down, you must turn the
ship around and thrust in the direc-
tion you're moving. Game options
include speed (1-3, where 1 is the
slowest and 3 the fastest) and time
limit (1-5 minutes).
There are two basic strategies
to playing Space Arena. You can try
to push your opponent into an as-
teroid, or push the asteroids into
your opponent. The effect of pho-
ton blasts on asteroids is much less
than on ships because the asteroids
are heavier. A single photon blast
can send a ship flying across the
screen, especially if the ship has to
turn around before being able to
slow down. On the other hand, if
your opponent is faced with several
fast moving asteroids, he may crash
into one on his own.
To load the game, type LOAD
"SPACE ARENA",8,1. To run it,
type SYS 49152. ®
RENT
WITH OPTION TO BUY FOR C64/128
COMPUTERS. UHY PAY FOR EXPENSIVE
SOFTWARE BEFORE YOU TRY IT IN
YOUR OWN HOME? RENT IT FOR A
FRACTION OF THE COST FROM
CENTSIBLE SOFTWARE. IF YOU WISH
TO PURCHASE AFTER PREVIEWING,
YOU WILL ONLY BE CHARGED THE
PURCHASE PRICE MINUS THE RENTAL.
^ 100'S OF COMMERCIAL DISKS.
^ NO DEPOSIT OR MEMBERSHIP FEE.
^ 1 WEEK RENTAL PERIOD.
^ LOW PURCHASE PRICES.
'^ SAME DAY SHIPPING.
■^ C.O.D.'S ACCEPTED.
y^ WE WILL MATCH ANY COMPETITORS
RENTAL PRICE!
^ CALL OR. WRITE FOR FREE CATALOG!
CBTTSBLE SOFTWARE
P.O. BOX 930
ST. JOSEPH, MI 49085
(616) 982-0327
CONVERSE WITH
YOUR COMPUTER
AT LASrr A FULL IMPL£MEKTATION ol Ihe original EUZA pro-
gram 13 now available to run on your CommodorB 6*'
CrealM at MIT in 1966, ELIZA has beeome Uie world's mosi
celsbratMartilicialintelligencedemonslrationpiogiam ELIZAisa
non-direciive psyctiotnerap'Si who analyzes eacn tiaiemam as
you type It in ana then responds wiin her own comment or
Question— and tier reinarks are often amatingly appropnate'
Oestgned lo run on a large ma intra me. EUZA has never beloie
been availat>le lo personal computer users eicepi in greatly
sliipped down versions lacking Ihe sophistical ion which made the
original program so tascinaling
Now. our new Commodore fM version possessing the FULL power
and range ol expression ol the original is being offered at the
inlioduclory price ol only S2S And if you wani to lind out how she
does It (or teach her lo do mora) we will include the complete
SOURCE PROGRAM lor only S20 addiuona)
Order your copy ol EUZA todayand you'll never again wondei how
<o respond when you hear someone say. 'Okay, let's see what this
computet Ol yours can actually do'"
READ WHATTHE EXPERTS SAY ABOUT OUR VEASIOM OF EUZA:
"Much more than a mere game. Vou'ii be impressed with
EUZA A convincing demonstration ol Artificial Intelligence "
-PCUAGAZINE
"Oelightluf entenainmani.An ideal medium lor showing oft your
system." —UlCftOCOUPUTING UAGAZIN€
"ELIZA isan astounding piece of toliware A fascinating program
lo use and study " -BARONS UICROCOUPUTER REPORTS
"ELIZA is a great way lo introduce your Inends lo computers A
very funny party game." -P£7£H A. UcWILUAUS
"ELIZA II an eiceptional program, one that's fun to use, shows off
your machine, and has great histotical interest "
—POPULAR COUPUTINQ MAGAZINE
"This version ol ELIZA is the best we have seen Aa a parly game, it
IS unmatched " -HOUE APPLICATIONS FOR THE C-M
EUZA 18 AVAILABLE IN THE FOLLOWING FORMATS:
(Please specify Disk or Cassenei
1 P'Olected Version (25
IPioiected Version can be run bui not listed or moditiedl
2 Un-piotectedCommodoreS4BASICSourceVeraion IAS
(Source Version can be listed and modilied as well as run)
Both versions include a six page user manual
Please add S2 00 shippmo and handling to all ordert
(California residents please add 6^4% sales tan)
ARTIFICIAL INTELLIGENCE RESEARCH GROUP
921 North La Jolla Avenue. Oepi G
Los Angeles. CA 90046
(213)656-7368 (213)654-2214
MC. VISA and checks accepted
Best of COMPUTE! and Gazette 41
You Have a Choice.
Numeric Keypads
CP Numenc Keypad. Deluxe Model
• Top quality, low profile lor smooth, rctiahlc
data entry. • Easil_\ connected with computer
keyboard. • No software is required. lOO^f
Compatible with all programs. • For CM, 64C.
SX-64*. VlC-20 and Apple lie, • One year
warraniv and available in three models;
Reg
S«95
Plus
S59 95
Delu«e
S69 95
Computer Power Supply
• Has bolter features than Ihe original otie at
S39.95. • Is serviceable. NOT disposable. • For
Commodore and Atari* Computers.
£ ^ Computer Place (2i3) 325-4754
^rr 23914 Crenihaw Blvd. Torrance. CA 90505
*nequires adaptoi ai aOiJitionai cosi VISA. MC & AE accepieo
No C O D Add $3 W shipprng CA residenis add 6 5% sales tax
Dealer inqumes welcome
! FIFTEEN TIMES THE POWER! ■
■ "
90% + CONFIDENCE LEVEL
Why purchase only 1 thoroughbred Fiandtcapping
Strategy wtien you can have the POWER ot the 1 5 most
popular handicapping strategies available''
2 A proven computer program, designed by an M B.A of
1 Finance, combines improved variations ol the 15 most
! popular handicapping strategies into one easy program.
■ This POWERFUL program called Mulli-Slrals can
2 analyze a race using 15 straiegies in a fraction of the
■ time you analyze a ra'ce using jusi 1 strategy.
■
■ Simply type m the answers to Ihe program questions. Ail
\ the into IS in Ihe Daily Racing Form. The results Of Ihe 15
■ sliaiegies will automatically appear on your screen or
\ prmief MulK-Slrais then tabulates the 15 sttategy totals
■ to give you an ultimate number lor each horse.
H When 10 or more Strategies select Ihe same horse to
■ win. that tiofse has over a 90<M) chance of winning
a
J Multi-Strats package includes: * 15 strategies * 40
■ page book (with money management) * 5Vi" or 3'i^"
2 disk or tape * telephone hoi line * lirst class delivery •
■ BONUS W1 Pick 6-10 Horse Program * BONUS «2Loi-
■ tery Program • BONUS «3 Free Las Vegas tripeliglbili-
J ty * All lor S69.95 (Add $2 S & H)
■
■ Mulli-Strats' Video Tutorial is available lor beginning
! computer operators and/or handicappers on VHS or
■ Beta lor S19 95. (Add $3 S & H)
! Order by Money Order. Check. Visa. MC. AMEX. or
■ C O.D. 10 Banana Software, Inc. Depl. SA, 6531 Park
■ Avenue. Kent, OH 44240.
■ ORDERS (216) 673-6969 (24 hrs,)
■ INQUIRIES (216) 673-6167 (recording)
S 10 DAY MONEY-BACK GUARANTEE
ALL MODELS
COMMODORE
APPLE
ATARI
IBM
RADIO SHACK
COLECO
Kicker
John Krause and Mark Tuttle
There's no such thing as luck in this
fast-paced two-player soccer simula-
tion for the Commodore 64 and 128 (in
64 mode). Two joysticks are required.
Defense is just as important as of-
fense in "Kicker," a two-player soc-
cer simulation in which each player
controls nine men. You need quick
reflexes to protect your goal anti to
drive the ball toward your oppo-
nent's goal.
Speed And Endurance
Plug a joystick in each port. Before
beginning play, you must select a
speed. You're prompted to press S,
M, or F {Slow, Medium, or Fast).
Slow is the recommended level to
start with so that you can get a good
feel for the game, although the me-
dium speed is probably the level
you'll choose most often. Here, the
speed is competitive and your
wrists may last for the entire game.
The Fast level should be attempted
only by diehard Kicker fanatics.
Player one, the blue team, and
player two, the red team, control
three rows of three men each. But
each player can access only one row
at a time. Move the joystick up to
select the top row, down to select
the bottom row, or leave it centered
for the middle row.
After choosing a row, you can
move the joystick left or right to
shift the entire row and get your
men into position to kick the ball.
When the ball comes near one of
your men, press the fire button to
kick the ball in the direction of your
opponent's goal. (The game is de-
signed so that you can kick the ball
only in the direction of your oppo-
nent's goal. You can't accidentally
kick the ball into your own goal.)
Kicking the ball requires split-
second timing. Holding down the
fire button won't do. You must
press the fire button at the moment
the ball comes in contact with your
player. Otherwise the ball will con-
tinue past your player. Remember,
selecting a row will not allow you to
kick the ball. You must activate the
row by pressing the fire button.
When a row is inactive (the fire
button is not pressed or you do not
control that row) the men are repre-
sented by three dots. Use the row of
men nearest your goal to block
shots by your opponent. The scores
of both players are displayed at the
top of the screen. After each goal, a
bell sounds and a red or blue light,
representing the color of the scoring
team, flashes in the goal area. The
ball is placed in the center of the
field at the beginning of the game
and after each goal. The first player
to score nine goals is the winner.®
42 Best of COMPUTEI and Gazette
Heat Seeker
Jeff Wolverton
Your jet climbs upward to avoid the
missile, then dives for the ground. But
it's still on your tail. You can't shake a
heat seeker. This fast-action game re-
quires a joystick.
Heat seeking missiles are danger-
ous. They sense the heat from your
jet engine and home in on you.
They'll catch you, too — they're
faster than a jet.
Your assignment: Eliminate
the heat seeker base. It's easy
enough to strafe the missiles on the
ground, but if any are launched,
you'll have to take evasive action.
Piloting The Jet
Use the joystick to control the
movement of the plane. The con-
trols may seem to be a little confus-
ing at first. You pull back to loop
upwards (counterclockwise) and
push forward to loop down (clock-
wise), like a real airplane. The jet
moves at a constant velocity — you
can't speed up or slow down. Press
the fire button to launch a missile at
the heat seekers on the ground.
It does no good to fire at a
moving heat seeker. They're
equipped with an Improved Elec-
tronic Evasion (lEE) circuit which
makes them impossible to hit. The
only way to get rid of a seeker is to
make it crash into the ground.
When you're being pursued, dive
for the ground and pull up at the
last second. Seekers are faster, but
they can't turn as quickly.
If you manage to eliminate all
the heat seekers, you get to start all
over again, with a new group of
heat seekers. You have eight jets to
work with — the number remaining
is displayed on the screen, next to
the score. If your jet is destroyed, all
missiles reappear.
To pause the game, press
SHIFT/LOCK.
The game includes an option
for a two-player mode, but it's not
competitive: The players take turns
flying the plane, trying for the high-
est possible score. The game reads
both joystick ports, so if you're
using two joysticks, the inactive
player should put down the joy-
stick to avoid interfering.
There are three levels of diffi-
culty: Novice, Intermediate, and
Expert. The higher levels have fast-
er action and tighter curves. A
flight-time bonus of ten points is
awarded every few seconds, just for
staying in the air. ©
CHIP
CHECKER
TESTS and/or IDENTIFIES
• Over 600 Digital ICs
• 74/54 TTL + CMOS
• 14/4 CMOS
• 9000 TTL
• 8000 National and Signetics
• 14-24PinChips(.3"+ .6" widths)
Pressing a single key identifies/tests
chips with ANY type of output in seconds.
The CHIP CHECKER now also tests popular
RAM chips. The CHIP CHECKER is available
for the C64 or C128 for $1 59. The PC com-
patible version is $259.
DUNE SYSTEMS
2603 Willa Drive
St. Joseph. Ml 49065
(616) 983-2352
COMPUTER COVERS
Protect Your Investment
Cover your valuable computer equipment
with Vinyl Computer Covers made liy North
Wind Computer Covers.
These superior Computer Covers are made
of 20 ounce vinyl that rennains soft, easy to
clean and maintain.
Commodofe 64 . .
Commodore t28. . .
Commodore 1541 . . .
Commodore 1571 .
Panasonic KX-P1080
S6.95 Commodore 1702. , $14.95
$€.95 Commodore 1902. . .S14.95
$6.95 Samong Monitor . . $14.95
Se.9S Gemini 10 $ 9.95
$9.95 Panasonic KX-Pl092i $ 9.95
Add $150 for shipping per item ($450 max.).
Washington residents add 7.3% Sales Tax.
Allow 6 weeks for delivery. Will accept
Checks or Money Order only. No Cash.
Make Check or Money Order to:
North Wind Computer Covers
P.O. Box 908
Vancouver, Washington 98666
Cokira Avallabis, Brown or Black
CITY
ITEM
COLOR
SHIPPING
SALES TW
TORL
UmiPrica lotai Price
Best o( COMPUTEl and Gazette 43
The Fast Assembler
Here's a truly amazing machine lan-
guage assembler for the 64 and 128 (in
64 mode). "Fast Assembler" supports
multiple statement lines, labels, and
macro-like "include" files. It can as-
semble to memory or to disk. Written
very compactly, it occupies only
about 2600 bytes, leavitig the rest of
memory for your source code. It also
adds to the BASIC editor several new
features useful to both BASIC and
machine language programmers.
Symbolic label-based assemblers
are the most convenient way to
write machine language (ML) pro-
grams. The instructions are entered
as source code and later assembled
into object code (the actual ML pro-
gram— the numbers in memory).
And rather than using memory lo-
cations, you can name routines
with meaningful labels. It's as if
you could enter GOSUB JOYSTICK
in BASIC.
Saving Memory By Using
The BASiC Editor
You write your ML programs for
"The Fast Assembler" (FA) with the
64's BASIC editor. You save to tape
or disk as you would a BASIC pro-
gram, and listing it to a printer is
exactly the same as listing BASIC.
The FA is an extension of the
BASIC interpreter especially de-
signed for writing programs in ma-
chine language. Writing it as a
BASIC extension kept the program
Yves Han
short (under 2600 bytes) because
many subroutines of the BASIC in-
terpreter could be used. Some mod-
ifications have been made to BASIC
to make writing programs easier.
To do this, the BASIC ROM had to
be copied to its matching RAM.
Even if you don't write pro-
grams in machine language, you
can still use the assembler because
of the new features added to BASIC
and the extra BASIC commands.
The assembler will execute a BASIC
program just like normal BASIC
would.
To start up FA, first load it as if
it were a BASIC program (don't use
a secondary address of 1, just type
LOAD "Fast Assembler",8. Then
type RUN. The enabling SYS is
built into the first line of the pro-
gram. The screen will clear, and a
message will appear at the top of
the screen, indicating FA has been
enabled. You can now start pro-
gramming— in BASIC or machine
language.
BASiC Modifications
And Enhancements
The following changes have been
made to the BASIC interpreter:
• Structured listings. Spaces
between the line number and the
first character on the line are not
deleted. This makes it possible to
indent lines and make listings easi-
er to read.
• List pause. You can freeze a
listing by holding down the SHIFT
key or pressing SHIFT-LOCK. List-
ing can be continued by releasing
the SHIFT key.
• ASCII translations and hex-
adecimal/binary numbers. In
arithmetic expressions, you can use
hexadecimal and binary numbers.
Hexadecimal numbers should be
preceded by "$" and binary num-
bers by "%". You can also use a
character preceded by a single
quote ('A is the same as ASC("A")).
You can also use this to find the
value of a BASIC token. For ex-
ample, PRINT 'END will print the
value 128, which is the BASIC code
for END. If you put a space be-
tween the quote and the character,
the ASCII value of the space will be
taken instead of the character.
• Variable and function
names. The rules for variable and
function names have been changed
a little bit. Instead of the first two,
the first eight characters are recog-
nized. FA recognizes NUMBERl
and NUMBER2 as separate vari-
ables, while ordinary BASIC would
consider them the same variable
(NU). Variables may contain but
not be equal to BASIC/assembler
commands or mnemonics: LAND is
a legitimate variable name, even
though it contains the keyword
AND. But variable labels starting
with TI or ST (reserved keywords)
are not automatically set to zero the
first time you use them. An excep-
tion to the eight character names is
that only the first two characters of
44 Best of COMPUTE! and Gazette
array variables are significant.
• Keywords. Because variable
and function names may contain
keywords, FA has to be able to
decide v^fhether a keyword is a key-
word or part of a variable or func-
tion name. So the assembler
recognizes a keyword if it's fol-
lowed by a space or nonalphabetic
character. For example, in PRINT
"OK" the keyword PRINT will be
recognized as a PRINT command,
but in A$ = "OK":PRINTA$, the
keyword PRINT is recognized as
part of the variable name
PRINTA$. You would have to in-
sert a space (PRINT A$) if you
wanted to print the variable A$.
• REM and DATA. Capital let-
ters in REM and DATA lines are
listed as capital letters and not as
tokenized BASIC keywords. For ex-
ample, 10 rem AB lists as it is en-
tered and not as 10 rem atnpeek as
normal BASIC would do.
New BASIC Commands
AUTO step value
This command turns automatic line
numbering on and defines the step
value between the line numbers. To
enter AUTO mode, type AUTO fol-
lowed by the step value and press
RETURN. Then enter a line with a
line number. The next line number
prints automatically. To leave auto
mode, move the cursor to an empty
line and press RETURN. To turn
automatic line numbering off alto-
gether, enter AUTO only.
You can also use this command
to delete part of a program. Turn
automatic line numbering on with a
step value of one. Type the number
of the first line you want to delete
and press RETURN. Keep pressing
RETURN until you've reached the
end of the section you want to de-
lete. Instead of pressing RETURN
again and again, you can enter
POKE 650428 and hold RETURN
down until you've reached the last
line to be erased.
OLD
If you accidentally type NEW, you
can restore your program with this
command. It can also be used if
you've installed a reset button. If
you've assembled a program and
are testing it, sometimes your com-
puter locks up. Use the reset button
and then enter SYS 4408 to restart
the assembler and type OLD to re-
store the source program. If your
program has not destroyed the as-
sembler or the source program, ev-
erything will be there.
Semicolon 0)
This has the same function as the
REM statement. It need not be sep-
arated with a colon from the pre-
ceding command. For example:
10 X = 0:REM SET X TO ZERO
is the same as
10 X=0;SET X TO ZERO
The semicolon in the commands
PRINT and INPUT is not treated as
a REM statement but as a separator.
Using Labels As Variables
And Addresses
Label names follow the same rules
as variable names. They can be
used in arithmetic expressions like
normal variables. You can define a
label in two ways:
You can place the label name
just before the command to which
you want to refer. If more com-
mands are on the same line, you
must separate the label from the
commands with a colon.
Or you can label the current
program counter: LABEL-
NAME = *. The asterisk (*) is a spe-
cial variable which gives the value
of the program counter. The
counter is the address where the
next instruction or datum will be
placed. You can only read the vari-
able *. You cannot assign a value to
it with the statement * = expr.
Here's an example of using la-
bels to mark routines in a program
(don't type this in, it's only a frag-
ment of a program):
50 JSR DISPLAYl; JUMP TO LABELED
SUBROUTINE (LINE 90)
60 LDA $FF: BNE SKIPIT ; CONDI-
TIONAL BRANCH AHEAD TO
SKIPIT
70TYA
80 SKIPIT: LDX #4: STA $8000,X: RTS;
TARGET OF BRANCH IN 60
90 DISPLAYl = • ; THIS LABELS THE
CURRENT PROGRAM COUNTER
100;
110 LDA #65: JSR $FFD2: RTS
Remember that in the lines
above, the semicolon marks the be-
ginning of a comment which, like a
REM, is ignored by FA. The tech-
nique in line 90 is valuable if you
think you may be adding some
code at the beginning of the rou-
tine. As listed, the subroutine called
DISPLAYl starts with LDA #65,
but later you could go in and add
some lines between 90 and 110.
Three Passes To Assemble
Three passes are required to assem-
ble source code (what you write)
into object code {an executable ML
program that the computer can fol-
low). But FA doesn't do it by itself.
You have to insert a loop that re-
peats three times with BASIC
commands:
10 FOR PASS = 1 TO 3
. (Insert source code)
90 NEXT PASS:END
If you use an invalid address-
ing mode such as LSR (expr),y
you'll see ILLEGAL ADDRESSING-
MODE ERROR. Mnemonics can
only be used in program mode —
that is, in a program you execute
with RUN. If you enter a mnemonic
in direct mode, you'll see ILLEGAL
DIRECT ERROR.
Also note that for Immediate
Addressing, the argument can be
an actual number or an arithmetic
expression with a value in the range
0-255. Or you can substitute a
string expression, in which case the
assembler takes the ASCII value of
the first character as the argument.
If the string length is zero, the argu-
ment becomes zero.
Assembler Commands
Assembler commands which write
data to the output device can only
be used in program mode, other-
wise you'll get ILLEGAL DIRECT
ERROR. All assembler commands
must be included in every pass.
ORG address,mode,device,name
This command must be used at the
start of each pass. It does several
things. First, it sets the origin
(ORG), the memory address for the
beginning of the ML program. It
assigns an initial value to the pro-
gram counter. It also sets the as-
sembler mode, which should be
zero on the first two passes and one
on the third and last. ORG also sets
the output device and filename (if
necessary).
Not all arguments are neces-
sary. Also permitted are:
Best of COwlPUTEl and Gazette 45
ORG
ORG address
ORG address,inode
Default values for the argu-
ments are:
address - 49152 (=$C000)
mode = 0
device — 0 and no name
If you use a mnemonic or as-
sembler command before you've
used the command ORG, you'll see
UNDEFD LOCATION COUNTER
ERROR.
The address assigns a value to
the program counter. Usually, you
use more than one pass to assemble
the source program. Only during
the last pass should the object code
be written to memory or to the out-
put device. Mode tells the assem-
bler when the last pass is reached.
Zero means it's not the last pass, so
no object code should be produced,
and there's no range checking for
arguments and no checking for too
large branches.
On the final pass, you should
set the mode to one, which signals
the last pass, when object code is
written to the output device.
Finally, you set the device
number of the output device and a
string expression which contains
the filename if the object code is not
written to memory. Zero means the
output device is memory. Be careful
not to write to memory locations
where the assembler is placed
($0801-$121B) or where the BASIC
interpreter is placed ($A000-
$BFFF).
A device number in the range
8-11 means the output device is a
disk drive. If mode is equal to one,
the assembler will open a PRG file
with the name specified in the argu-
ment name. The logical file number
will be eight.
BYTE expTesswn,expresswn,...
This command writes numbers or
characters to memory or the select-
ed output device. It can have one or
more arithmetic or string expres-
sions separated by commas. Arith-
metic expressions must give a
positive value less than 256. The
value will be placed in one byte.
Each character of a string expres-
sion will be placed in one byte.
WORD expression,expression,...
This has the same function as BYTE
except that values of arithmetic ex-
pressions must be positive and less
than 65536. The value will be
placed in two bytes in low/high
format.
INCLUDE name,device
This command assembles a file
from disk and inserts the resulting
object code into memory or the out-
put device. The file must be a nor-
mal PRG file and may not contain
BASIC commands which cause a
branch to another line or stop the
program. Also not permitted are the
BASIC commands DEF, RETURN,
CLR, NEW, and the assembler
commands SEND and INCLUDE.
The file is opened with a logi-
cal file number of nine. The file is
closed when the end of the file is
reached. The name is the filename
you're including, and the device
number can be 8-11 (use 8 if you
have a single drive). If you have
only one disk drive and you assem-
ble to disk, the file(s) for the com-
mand INCLUDE must be on the
same disk to which you assemble.
All variables and labels are
global, which means you can pass
parameters to INCLUDE files so
they can work like macro-instruc-
tions. Let's say you're writing a pro-
gram that needs to access several
different disk files, and there are
several points in the program that
use the Kemal routines SETLFS,
SETNAM, and OPEN. You could
write the source code that performs
these Kemal calls and save it to disk
under the program name "OPEN"
to be used later. Then, in the main
program, use INCLUDE "OPEN"
,8. When the source code is com-
piled, the series of commands from
the OPEN file are automatically in-
serted in the proper place in the
object code.
SEND stringexpr
The command SEND may be used
only if the object program is written
to disk. It's used to link object code
to a BASIC program. Stringexpr
must contain a BASIC line with line
number. If you forget the line num-
ber, you'll get MISSING LINE
NUMBER ERROR. If you want to
send more than one line, you must
use SEND for each line, and you
have to send the lines in the right
order. You must send the lines
before the actual object code is writ-
ten to disk. The address in the ORG
command must be the start of
BASIC RAM (2049).
UNSEND
If you load a program which con-
sists of both BASIC and ML, the
interpreter has to know where the
BASIC part ends. UNSEND places
a mark which the computer recog-
nizes as the end of the BASIC part.
Example Programs
100 FOR PASS = 1 TO 3:PRINT
'TASS'TASS
110 ORG SCOOO
120 IF PAS = 3 THEN OFG $C000,1
130 START: LDX #0
140 LOOP: LDA TEXT,X:PRINT TEXT,
150 BEQ EXIT
160 JSR $FFD2
170 INX
180 BNE LOOP
190 EXIT: RTS
200 PRINT '
210 TEXT: BYTE "EXAMPLE 1",0
220 NEXT PASS:END
Lines 110 and 120 show how
to use the command ORG. In every
pass, line 110 sets mode 0. But in
pass three, line 120 sets mode 1.
The object code will start at 49152
(hexadecimal $CO0O). Line 200
prints the current value of the loca-
tion counter (*).
You can assemble the program
with the command RUN. The pro-
gram will give the following
output:
PASS 1 0 49165
PASS 2 49165 49166
PASS 3 49166 49166
The first column is the pass
number. The second column is the
value of the label TEXT in the in-
struction LDA TEXT,X in line 140.
The third column is the value the
label should have when the source
code is assembled. You can see that
only in pass three are these values
equal to each other. This is because
the assembler defaults to zero-page
addressing. In pass one, TEXT has a
value less than 256 so zero-page
addressing is assumed. This means
a two-byte instruction instead of
three. The value assigned to TEXT
will be too low, as you can see in
pass one. In pass two, this value,
which is too low, vnW be used in
assembling line 140. The assembler
decides not to use zero-page ad-
dressing, so TEXT is assigned the
correct value. In pass three, the cor-
46 Best of COMPUTEI and Gazette
rect value replaces the previously
incorrect values during assembly.
5 ; EXAMPLE PROGRAM 2
6;
10 PRINT CHR$(147)
11 DEF FN H{X) = INT(X/256)
12 DEF FN L(X) = X-256*FN H(X)
20 PRINT:PRINT" Loader maker"
30 PRINT:PRINT" Enter the name of the
program that"
40 PRINT" has to be loaded by the
loader."
50 INPUT" >";NAME$
60 FRINT:PRINT" Enter the name of the
loader."
70 INPUT" >";N$
80 PRINT:PRINT" Enter the address to
execute the"
90 PRINT" program."
100 INPUT" >"; ADDRESS: ADDRESS =
ADDRESS-1
105;
110FORPASS=lTO3
115;
120 ORG 2049
130 IF PASS = 3 THEN ORG 2049,1,8,N$
135;
140 SEND "10 SYS + STR$aOADER)
150 UNSEND
155;
160 LOADER: LDA #8:TAX:LDY #1
170 JSR SFFBA
180 LDX #FN L(NAME»
190 LDY #FN H(NAME)
200 LDA #LEN(NAME$)
210 JSR $FFBD
220 LDA #FN H(ADDRE5S):
PHA
230 LDA #FN L(ADDRESS):
PHA
240 LDA #0:JMP $55D5
250 NAME: BYTE NAME$
255 ;
260 NEXT PASS:CLOSE 8:END
The above example program
shows how to use the commands
SEND and UNSEND to write a pro-
gram that includes a SYS within a
BASIC Une.
The main routine at 160-250
illustrates how to load another pro-
gram from an ML program. Note
that the lines up to 100 are BASIC;
they prepare the variables and de-
fined functions for use in the source
code. If you assemble the program
with the command RUN, you'll get
a program that can load another ML
program from disk and execute it.
The object code will be written to
disk.
In line 140, the command
SEND writes a BASIC line to the
output device by which you can
load and run the program as if it
were a normal BASIC program.
Line 150 marks the end of the
BASIC part of the object code.
The INPUTS in lines 50, 70,
and 100 permit you to enter the
parameters for the object program
when the source program is assem-
bled. In this way you can make
different object programs with one
source program.
Another advantage of writing
the assembler as a BASIC extension
is that you can assemble a program
to the top of memory. Use the fol-
lowing construction to do this:
100 POKE 56,PEEK(56)-4:CLR
110 TOPOFMEM = PEEK(55) + 256«(PEEK
(56) + 4)
120 ADDRESS=0:MODE=0
130 FOR PASS = 1 TO 3
140 ORG ADDRESS
150 IF PASS = 3 THEN ORG ADDRESS,
MODE
. Source code
900 NEXT PASS
910 IF MODE^l THEN END
920 ADDRESS = TOPOFMEM-*
930 MODE = l:GOTO 130
In this program, the source
code goes through six passes. Dur-
ing the first three passes the loca-
tion counter remains at zero. Mode
0 is used so the object program will
not be written to the output device.
The length of the program is calcu-
lated and subtracted from TOPOF-
MEM. This address is used in the
second three passes to assemble to
the top of memory. MODE is set to
one so the assembler will write the
object code to the output device
during the sixth pass (actually pass
three of the second time around).
Line 100 is used to reserve IK at the
top of memory for the object
program.
Large Programs
If your source program won't fit
into memory, you can split your
program and use the command IN-
CLUDE. For example:
10 FOR PASS = 1 TO 3
20 ORG ADDRESS
30 IF PASS = 3 THEN ORG ADDRESS,!
. Part 1 of source code
90 INCLUDE 'TART 2",8
100 INCLUDE "PART 3",8
110 NEXT PASS:END
The labels and variables used
in the INCLUDE fUes will be global
variables, which means you can use
them in arithmetic expressions ev-
erywhere in the program.
Another possibility is chaining
the programs, but then you can't
use a FOR-NEXT loop for the
passes. You must use another way
to define the passes. For example:
FIRSTPROGRAM
10 PASS = PASS + 1:IF PASS=4 THEN
END
20 ORG ADDRESS
30 IF PASS = 3 THEN ORG ADDRESS,1
. Source code
90 LOAD"SECONDPROGRAM",8
SECONDPROGRAM
. Source code
90 LOAD"FIRSTPROGRAM",8
Note that these are just exam-
ples. You'd have to insert your own
source code as indicated. To chain
programs, you would load and exe-
cute the first program, it controls
the number of passes and loads the
next program. The next program
loads the following program and so
on until the last program, which
must load the first again. S
COMMODORE
AUTHORIZED
SERVICE
POWER SUPPLY (0-64) $29.95
C-64 REPAIR 44.95
1541/1571 ALIGNMENT 35.00
1541 REPAIR & ALIGNMENT 75.00
C-1 28 REPAIR 75.00
1571 REPAIR 95.00
POWER SUPPLY (C-128) 84.95
EXTENDED WARRANTY CALL
fTBB Return Freight - Continontat US
Add$10forAPO. FPO. AIR
Save COD charge - send Check or
Money Order. (Purchase Order Accepted)
Second Source
Engineering
2664 Mercantile Drive
Rancho Cordova, CA 95670
(916)635-3725
Best of COMPUTEl and Gazette 47
Disk Editor
For more advanced readers, here's a
utility that offers power and flexibili-
ty unavailable with BASIC. With a
few commands, you can easily exam-
ine and alter any byte on a disk.
You probably use your disk drive
mainly for saving and loading
BASIC programs, occasionally dab-
bling in sequential and relative
files. BASIC provides simple com-
mands for using each type of file:
SAVE, LOAD, PRINT#, etc. When
you type SAVE, for example, you
don't have to worry about what
instructions to give the disk drive to
make it write your program on the
disk. BASIC works together with
the Disk Operating System (DOS)
to automatically perform all the
necessary tasks.
The disadvantage of using
these simple commands instead of
accessing the disk directly is lack of
control and power. For example,
DOS has a scratch command, but
not an unscratch command. So if
you accidently scratch a file, there's
no way to bring it back, even
though all the information is still on
the disk. And DOS has the ability to
lock a file so that it can't be
scratched, but no command is
available for using this feature.
Accessing the disk directly
gives you much more power and
flexibility. DOS has several low-
level commands for this purpose.
The Block Read and Block Write
commands enable you to change
the contents of an individual block
Kevin Mykytyn
or sector. But these commands are
difficult to use.
"Disk Editor" makes it easy to
examine and alter any byte on the
disk. To run it, type LOAD "DISK
EDITOR",8,l and NEW. Then in-
sert the disk you want to edit and
type SYS 12000. Note: Before using
one of your regular disks, test Disk
Editor with a new disk containing
copies of a few programs.
How To Use It
To use Disk Editor effectively, it's
important to understand how a disk
is organized. A Commodore disk is
divided into 35 tracks, each con-
taining a number of sectors (see
table 1). Each sector contains 256
bytes. A disk has a total of 683
sectors, but only 664 are available
for data storage because the direc-
tory occupies all 19 sectors of track
18 (track $12 in hexadecimal).
Disk Editor begins by reading
track $12, sector 0, and displaying
the 256 bytes in that sector. (All
numbers in Disk Editor are in hexa-
decimal for better screen format-
ting.) The editing cursor appears in
the upper-left corner. Move it
around the screen with the cursor
keys. The sector currently being
displayed is indicated at the top of
the screen along with the track
number and the current byte num-
ber within the sector. Notice how
the byte number changes as you
move the cursor. Press the HOME
key to quickly position the cursor at
the upper-left comer.
To make a change, move the
cursor to the desired byte and type
in the new value. This doesn't
change the actual byte on the disk.
When you've made all the changes
you want on that sector, press
CTRL-W to write the sector to the
disk.
To display another sector,
press + and type the new track
number at the top of the screen.
Press — to change the sector num-
ber. The INST/DEL key allows you
to correct mistakes. Then press
CTRL-R to read the sector and dis-
play it on the screen. If a track or
sector number is outside the range
shown in Table 1, Disk Editor prints
ILLEGAL TRACK OR SECTOR and
cancels the CTRL-R command.
Table 1: Number of
sectors per track
Track Number of sectors
1-17
21
18-24
19
25-30
18
31-35
17
Disk Editor checks for errors
on all commands. If an error occurs,
a message is printed and the com-
mand is aborted. Press any key to
continue.
To quickly get to an adjacent
sector, hold down SHIFT and press
+ or — . Pressing + with SHIFT
displays the next highest sector,
and pressing — with SHIFT dis-
plays the previous sector.
Another way to move around
the disk is CTRL-J (Jump), which
48 Best of COMPUTEI and Gazette
uses the number under the cursor as
the track and the number in the next
byte as the sector. This is handy for
jumping to chained sectors.
A program on disk is stored not
in sequential sectors, but in sectors
scattered about the disk. To link all
these sectors together, the first two
bytes of each sector contain the
track and sector numbers of the
next sector in the chain. The last
sector is flagged by a zero in the
first byte. The second byte contains
the number of bytes used in the
sector. To jump to a chained sector,
press HOME to put the cursor on
the link bytes, then press CTRL-J.
When examining sectors con-
taining a BASIC program or a text
file, it's helpful to display the bytes
as screen code or ASCII characters.
CTRL-A toggles between screen
codes and hexadecimal format.
When you're in screen code format,
pressing the Commodore and
SHIFT keys together toggles be-
tween ASCII and screen code for-
mat. SpeedScripl and some other
word processors store text as screen
codes, while EasyScript saves docu-
ments as ASCII codes.
CTRL-$ displays the normal
directory. Hold down SHIFT to
pause the scrolling. To exit the pro-
gram, press CTRL-X. It also closes
all files, and initializes the disk.
Changing The BAM
Bytes $4-8F of sector 0 are the Block
Allocation Map (BAM). The BAM is
divided into 35 groups of four bytes
each, one group for each track. The
first byte of each group is the num-
ber of free sectors on that track. Each
bit in the other three bytes repre-
sents a sector on the track. If a bit is
on, it means the sector is free. If it's
off, the sector is used.
Track $12, the directory, con-
tains all the information about how
the files are organized on the disk.
By changing a few bytes in this
track, you can perform some neat
tricks. Sector 0 contains the Block
Allocation Map (BAM), and the
other sectors store the directory en-
tries and are linked by the first two
bytes in each sector.
Bytes $2-lF of sector 1 contain
information about the first file in
the directory. Byte 2 is the file type.
A value of $82, for example, indi-
cates a PRG file. By setting bit 6 of
the file type, you can lock the file to
keep it from being scratched. Sim-
ply change the 8 to a C and remem-
ber to write the sector to the disk
with CTRL-W. If you display the
directory with CTRL-$, you should
see a < character next to the file
type, indicafing a locked file.
Bytes 3 and 4 contain the track
and sector numbers of the first sec-
tor that the file is stored. You can
view the contents of the file by
posiHoning the cursor on byte 3 and
pressing CTRL-J. Press CTRL-J
again to jump to the next sector in
the chain, and so on.
Recovering A
Scratched File
If you should accidentally scratch a
file, you can unscratch it with Disk
Editor. Follow these steps:
1. Don't save anything to the
disk with the scratched file; you
may overwrite the sectors contain-
ing the program or data.
2. Load Disk Editor, insert the
disk to be altered, and SYS 12000.
3. Display track $12, sector
$00. Press CLR/HOME to go to the
top and then CTRL-J (to get to the
first track of directory entries).
Tabie 2: Disic Editor Commands
CTRL-A
CTRL-J
CTRL-R
CTRL-W
CTRL-X
CTRL-$
SHIFT-Commodore
SHIFT-H
SHIFT—
-I-
INST/DEL
HOME
Cursor keys
Alternate between hexadecimal and screen code.
Jump to track and sector under cursor.
Read track and sector at lop of screen.
Write to track and sector at top of screen.
Exit program.
Display directory (SHIFT to pause).
Toggle between screen code and ASCII.
Display next sector.
Display previous sector.
Set track number.
Set sector number.
Delete a character when entering track or sector number.
Position cursor at upper-le/l comer.
Move cursor.
4. Switch from hex to ASCII, to
look at the filenames, which should
be at locations $05, $25, $45, and so
on. If the file to be unscratched is
not in the sector, press CLR/HOME
to go to the first two bytes and then
CTRL-J, to jump to the next sector.
5. When you've located the
correct directory entry, look three
bytes to the left— $02, $22, $42, etc.
A $00 in this location marks a
scratched file. Change it to $82 to
make it a program file, $81 for a
sequential file.
6. Write the sector back to the
disk with CTRL-W and exit with
CTRL-X. To make sure the BAM is
correctly updated, you should vali-
date the disk with the line OPEN
15, 8,15, "VO". This process may
take some fime, but when it's done,
the file has been restored. ©
THE RULER CAD SYSTEM
Non stop drawing. No single page or area
selecting necessary. All drawings are
made on a continuous scrolling page in
memory ttie large size of four screen
areas.
Create Symbols to use where needed, up
to 127 per bank, to save countless hours of
design time. Or, modify, combine, and
rearrange the included symt>ols. You
determine which symbols are in memory.
Utilites included on the disk.
Erase Mistakes with a single keypress.
Duplicate and move frequently used items
from a current or previous drawing,
Lettering has three text sizes. Small, full
size and large for documenting, etc.
Overlay Grids and Ruler for alighning.
Help Screen for all program commands.
Print the entire drawing to scale or an
enlarged section on Star. Gemini, Epson,
and 1525 series printers.
All Disk Commands from the program.
Supports hard and multiple disk drives.
Requirements: CI 28 Computer, disk
drive, minimum 128K expansion RAM,
1350 mouse or Joystick, (Mouse recom-
mended)
To order direct by M/C or Visa, call
Monday-Friday 8:00-5:00 MST. $49.95 +
$1.50 shipping. For COD add additional
$4.00
BONE FRONTIER COMPANY
Box 279
Broomfield, CO 80020
(303) 466-2255
Best of COMPUTEI and Gazette 49
Fast File Copier
This handy disk utility does more
than just back up files; it also
scratches, renames, formats, and vali-
dates. It's especially helpful when
you're reorganizing your disk library.
For the 64 and 1541. Also works on a
128 (in 64 mode) and the 1571.
When you find yourself loading
and listing 50 (or more) disk direc-
tories just to find one program, you
know it's time to start putting your
disks in some sort of order. But
copying programs takes a lot of
time, especially if you have to load
and save programs one at a time to
transfer them from one disk to an-
other. There are much more inter-
esting things to do with your
computer than loading and saving.
It gets worse if you have sequential
files rather than program files.
"Fast File Copier" makes it easier to
make single or mulhple backups,
eliminating much of the burden of
disk organization.
Fast File Copier displays all the
files in the directory; you select any
or all of them by merely moving the
cursor around the screen. The pro-
gram loads as many files as possible
into memory, prompts you to insert
a destination disk, and then saves
the programs or files to the backup
disk. If all files fit in memory the
first time around, you're done. Oth-
erwise, follow the prompts until the
entire procedure is completed.
There's no need to remember the
names of the files or how to spell
them, and you don't even have to
know what type of file it is or where
it's located. Fast File Copier handles
everything for you. Fast File Copier
does more than just copying. It can
Ross Ouwingo
also delete selected files, rename
files, and validate or format a disk.
There are menus and prompts for
every function so there is no need
to memorize anything to use the
program. Just load, run, and follow
the menus.
Load and run Fast File Copier
just as you would any BASIC pro-
gram. The title screen will appear
and prompt you to insert the source
disk. Press any key when you're
ready to get started. The next thing
you should see is the directory, un-
less there are no files on the disk or
the disk is unformatted. In these
cases, the type of problem will be
displayed, and you'll be allowed to
quit, insert another disk, or format
the disk.
The Directory
The directory screen makes this
program easy to use. At the top of
the screen is the menu of the op-
tions you can use. Below this menu
you'll see the disk directory split
into two columns. Up to 32 titles
may be displayed on this screen at a
time. If there are more than 32 files
on the disk, press i7 and the next
page of titles will be displayed. To
return to the previous page, press
f5. There may be several pages
since the directory has room for up
to 144 files on a disk.
If you look closely at the listing
of titles, you may notice that some
of the titles have a comma and the
letter S, U, or R after the filename.
This indicates that a file is a sequen-
tial, user, or relative type. Program
files are unmarked. This feature is
only for your reference; it does not
affect how you use any of the func-
tions in this program. Don't bother
trying to copy relative files. They're
considerably different from other
types of files and cannot be copied
with the techniques used by the
Fast File Copier.
The only other unusual item
that may appear in the directory is a
title with a large dot at the end. This
indicates that the file is unclosed (a
"poison" file, also called a "splat"
file) and you will not be allowed to
delete or copy it. If an unclosed file
appears on a disk, you should elim-
inate it by validating the disk. If you
don't eliminate an unclosed file, se-
rious problems may result in the
directory. To validate the disk,
press f2.
Copying Files
Before copying a file, you must
mark it so the Fast File Copier
knows which one to copy. Using
the CRSR keys, move the X-shaped
cursor in front of the file to be cop-
ied. When the cursor is positioned
in front of the desired title, press the
space bar and the title will be
changed to reverse characters. If
you change your mind, press the
space bar again and the title will
return to normal. To copy more
than one program, move the cursor
to the next desired title and press
the space bar. There is no Hmit on
how many titles you may select.
You may even switch to other
pages if necessary. All titles dis-
played with reverse characters will
be copied. When you've made your
selections, press fl to start the
copying procedure.
The copy routine begins with a
prompt to make sure you are ready.
If you change your mind, press fl
again and you will return to the
50 Best of COMPUTEI and Gazette
directory. Press any other key to
begin copying. The program will
begin with the first title in the direc-
tory and check whether you select-
ed it. If it wasn't selected, it will skip
to the next one until it finds one to
copy. It then checks whether the
file will fit into the available memo-
ry. If there is sufficient space, the
file is loaded.
The program continues to
check each of the selected files and
loads them as long as there is room
in memory. If a file is too big to be
loaded, it is skipped until the next
pass. After as many files as possible
have been loaded into memory,
you are prompted to insert the des-
tination disk and press a key when
you're ready. Again, if you change
your mind, press fl to abort the
backup. If your sound is turned up,
you'll hear a chime to let you know
that the program is waiting for you
to switch disks.
After all the files are saved, the
program checks to see whether
there were any files that were not
loaded on the first pass. If no more
files are to be copied, you will be
asked if you want to copy the same
files again to another disk or begin
work on another disk or quit the
program altogether.
A maximum of 49664 (about
48K) bytes of RAM is available for
copying. This works out to 194
blocks. Files larger than this cannot
be copied by this program. The
amount of memory available varies
slightly depending on how many
titles are on the disk. All memory
between 2047 {$07FF) and 53248
($D000) is used for storage of load-
ed programs.
The disk drive status message
is displayed each time after the disk
drive has been accessed. This is
handy information if there is a
problem copying any of the files.
Fast File Copier is written so
that fast load cartridges such as Fast
Load from Epyx may be used while
copying. This will speed up the
loading of the files, but it will not
speed up the saving of the files.
(Sorry, "TurboDisk" will not work
in conjunction with this program.)
Scratching Files
An important feature that is neces-
sary after copying files is the ability
to delete them from the source disk
when they're no longer needed.
With the Fast File Copier this is just
as easy to do as copying files. Mere-
ly mark the files you want to delete
and press f3.
There are two ways to proceed
from this point. If you want all the
marked files to be deleted automat-
ically, press the A key. If you're not
too sure of yourself, press the V
key. This option will stop at each
fitle and ask you if you are sure. If
you want the file deleted, press the
Y key. If you don't want it deleted,
press the N key and it will skip to
the next fitle. When all the selected
files are deleted, you will be asked
to press any key to continue. You
may insert another disk at this fime
or keep the present disk in the
drive. Press a key, and the directory
of the disk will be loaded and dis-
played and you may continue again
with any of the options shown on
the directory screen.
Renaming Fiies
It is sometimes desirable to change
the names of certain files after
transferring them to another disk.
This is done much the same way as
copying or deleting files. First, mark
all the titles you would like to re-
name and press f4. The old name of
each file will be displayed, and you
are asked to type in a new name. If
you press RETURN without typing
anything else, the file will not be
renamed. The new name may be
only 16 characters long. If more
than 16 characters are typed in,
only the first 16 will be used.
Formatting And Vaiidating
Formatting and validating a disk is
straightforward. You will be asked
to type in a disk name and ID
before formatfing. Remember that
formatfing erases everything on the
disk, so be careful with this func-
tion. Validating only requires you
to type any key when you're sure
you're ready. Both funcfions will
allow you to abort by pressing fl.
When you're through using
Fast File Copier, you may return to
BASIC by pressing Q. Quitfing this
way is much the same as pressing
RUN/STOP-RESTORE, except the
screen is cleared and the colors are
changed back to normal. ®
MW350
NEW 1.91 ROM
NEW * Compressed mode
with audible tones
NEW * Enhanced double-
strike function
NEW * Buffer-repeat mode
Your choice of lOK or 2K buffers.
DEMAND THE BEST LOOK NO FURTHER
Long recognized by leading experts as the most
reliable and durable unit of its kind made in the
USA! With full graphics, the 350 supports GEOS and
CPM ahke. See your nearest dealer today.
ALoO: MW6 1 1 general purpose INPUT/OUTPUT
+ Basic programmable + 16 Analog channels
+ 16 Discrete outputs + one analog output
.(Si
A
Omega Sort
Written entirely in machine language,
this fast sorting routine for the Com-
modore 64 can be used by anyone and
does not take away any space from
BASIC memory.
If you write programs that handle
data, sooner or later you will need a
routine to sort items into alphabeti-
cal order. There are several sorting
methods suitable for use in BASIC,
including the bubble sort, shell sort,
and quick sort. None of those meth-
ods, however, is very efficient for
sorting large amounts of data.
"Omega Sort" is a speedy ma-
chine language routine which you
can use in any BASIC program,
even if you don't know a thing
about machine language.
Omega Sort can sort 1000 ran-
domly ordered strings in alphabeti-
cal order in less than six seconds.
To see the routine at work, load and
run the program "OMIGA.DEMO".
When you run OMIGA.DEMO,
it loads the machine language rou-
tine (OMIGA SORT) from disk into
memory. Then it prompts you to
enter the number of strings you
wish to sort. To create 1000 random
strings, for instance, type 1000 and
press RETURN. The program prints
all of the strings on the screen in
their original order, then it sorts
them alphabetically. When the
sorting is done, the program dis-
plays the strings in the new order,
one screenful at a time. Press any
Jonathan J, Holuta
key to view the next page of data, or
press fl to exit the program.
How To Use It
To use Omega Sort, your program
must begin by loading the machine
language routine into memory. The
first line of OMIGA.DEMO demon-
strates how this is done.
Some machine language sort-
ing routines sort only one dimen-
sion of a multidimensional array,
which is not always convenient. To
demonstrate why, suppose that you
have an address file program that
stores a list of names and addresses
in a two-dimensional array as shown
here:
N$(l,l) = name 1
N$(l,2} = street 1
N$(l,3) = city 1
N$(l,4) = state 1
N$(l,5) = zip code 1
N$(l,6) = phone 1
Each full entry contains six
separate items: the name, street,
city, state, zip code, and phone
number. In a real program, of
course, you might have dozens or
even hundreds of such entries. The
name for entry 2 would be con-
tained in N$(2,l), and so forth.
If you sort the first dimension of
this array (name), then the names
will be mismatched vrith the other
data items. The name for entry
number 1 might be matched with
the street for entry 36, and so on.
Instead of sorting the strings
themselves. Omega Sort sorts a nu-
meric index array. Each element of
the numeric array points to one
data set in the string array. The
advantage of this method is that all
the items within each data set re-
main in their original order. In ad-
dition to great speed, this gives you
more flexibility in using string arrays.
In OMIGA.DEMO, the string
array is named A$, and the index
array is named N%. Note that the
index array must be an integer ar-
ray (one whose name ends with %).
Any legal Commodore variable
names may be used, provided you
follow this simple rule.
Calling Ttie
Mactiine Language
Like other machine language rou-
tines, Omega Sort is called with a
SYS command. In addition to the
command itself, which includes the
starting address of the machine
code, you must supply three items
of information: the number of ele-
ments to sort, the name of the string
array, and the name of the index
array. Here is an example:
100 SYS 49152,N,N$(0),N%(0>
In this statement, the variable
N indicates the number of elements
to be sorted, and the variable N$(0)
indicates the name of the array you
wish to sort. If there are 40 ele-
ments in the N$ array, for instance,
you would set N to 40 before exe-
cuting line 100. Or, you could just
replace N with the number 40. The
variable N% is the index array.
Once the sorting is complete.
52 Best ot COMPUTE! and Gazette
the index array contains the new
order. To gain access to the sorted
data, you must refer to elements of
the string array through the index.
Look at line 110 of OMIGA.DEMO.
The expression A${A%(X)) causes
PRINT to display the elements of
A$ in the order contained in the
A% array. Remember, Omega Sort
rearranges the order of the numeric
index array, not the string array
itself. Each element of the index
array points to one element of the
string array.
The SYS statement for a multi-
dimensional array is the same, except
that you must specify which dimen-
sion to sort. Here is an example:
100 SYS 49152,N,N$(0,3),N%(0)
For the address array men-
tioned above, the preceding state-
ment would sort the addresses
according to the array's third
dimension (city). This statement
would sort it according to the first
dimension (name):
100 SYS 49152,N,N$(0,1),N%(0)
This statement would sort the
address array by its fifth element
(zip code):
100 SYS 49152,N,N$(0,5),N%(0t
Here is an example line that
would print the elements of the
address array in their new order:
110 FOR X-O TO N:PRINT
X,N$(N%(X),5):NEXT
You can use this routine with-
out knowing how it works, but, for
those who are interested, here is a
brief explanation. Omega Sort first
stores important zero page pointers
in the cassette buffer so it can use
these locations for its own pur-
poses. Then it determmes where in
memory the arrays reside. In the
case of strings, the actual text is
stored from the top of BASIC mem-
ory in a downward direction. The
array storage space (located just
above the end of BASIC program
text) contains a series of pointers to
the strings in high memory. Omega
Sort checks the pointers and then
changes the values of the integer
array to match the alphabetical or-
der of the strings themselves. When
finished, it restores the contents of
the zero page and returns to BASIC.
The entire process works so quickly
that it can sort a hundred strings in
less than a second. @
Automatic
Syntax
Checker
Philip I. Nelson
How many times have you typed
PRNIT instead of PRINT, or LIT in-
stead of LIST? When it comes to typ-
ing, none of us is perfect. This
automatic utility for the Commodore
64 can save you a lot of time by
catching such mistakes before they're
added to your programs.
Unlike some other computers, the
Commodore 64 doesn't check
BASIC lines for errors as you type
them in. We all know a line like 010
MONKEY(BIZ)*5-DOGA$# is non-
sense, but in many ways the com-
puter treats it as normal BASIC.
You can type in that line, list it,
renumber it, even save it as a pro-
gram and load it back into memory
without any protest from your 64.
When a line starts with a num-
ber, the computer simply stores it in
BASIC memory — no questions
asked. The 64, like all other Com-
modore computers, can't find mis-
takes until it's running a program.
As a result, after spending hours
writing a program, you may spend
hours more watching it crash until
you've corrected all the typing
errors.
"Automatic Syntax Checker"
eliminates that headache by adding
automatic error checking to your
Commodore 64's BASIC. Once the
Syntax Checker is installed, the
computer automatically checks ev-
ery BASIC line you type in. If the
line is free of typing errors, it's
added to your program as usual. If
not, the Syntax Checker prints an
error message and lets you try
again. Since the line isn't correct,
the Syntax Checker doesn't add it
to your program.
Getting Started
Although Automatic Syntax
Checker is written entirely in ma-
chine language, you load and run it
as you would any BASIC program.
Do not try to start this program with
SYS. Because it handles like BASIC,
it's easy to make new copies of the
Syntax Checker as well. Simply
save it on a new disk or tape as you
would a BASIC program.
When you run the Syntax
Checker, it moves itself from BASIC
program space to a safe memory
location at 49152. After a brief prep-
aration, it performs a NEW to let
you type in your own programs.
When you see the message CHECK-
ER ON, you know the Checker is
ready to go. Since this utility does
NEW after installing itself, you
should always run it before you load
or type in any other program.
Although you can run BASIC
programs while the Syntax Checker
is active, some programs may
POKE into the same memory space
at 49152 or disrupt it in other ways.
Thus, it's wise to turn the Syntax
Checker off before you run any
BASIC program. Type SYS 49152
and press RETURN: The message
Best of COMPUTEI and Gazette 53
CHECKER OFF tells you the sys-
tem is back to normal. To turn the
Checker back on, enter SYS 49152
again (it won't do a NEW this time).
Once the Syntax Checker is in-
stalled, SYS 49152 turns it on or off
safely, whenever you want, with-
out disturbing the BASIC program
in memory.
Automatic Error Checking
When the Syntax Checker is active,
it analyzes every line you type into
the computer. If you type a com-
mand in direct mode (without a line
number), the Syntax Checker sim-
ply passes it along to the computer
(Commodore BASIC can find direct
mode errors by itself). Thus, you can
use direct commands as usual to
load and save programs, and so on.
However, when you put a
number at the beginning of the line,
the Syntax Checker scans every-
thing in the line to make sure it's
correct BASIC. If no error message
appears, then you know the line is
correct— that is, it's all BASIC that
the computer can understand. To
demonstrate, run the Syntax Check-
er, then type in the following line:
10 PRINT "HI"
Since this line has no errors,
the 64 behaves normally. After you
press RETURN, the blinking cursor
goes to the next line on the screen.
You can list this program to confirm
that it's there, or run it to see if it
works. Now let's force an error.
Move the cursor up and type over
line 10 so it looks like this:
10 PNIRT "HI"
Because PNIRT isn't a BASIC
word, the Syntax Checker prints
SYNTAX ERROR. List the program
again to see whether the computer
replaced the good line with a bad
one. As you'll see, the first (correct)
version of line 10 is still there. The
Syntax Checker won't let you add
or change any lines in a program
unless they're free of typing errors.
This feature makes it handy for
editing existing programs as well as
writing new ones.
Phantom BASiC
The Syntax Checker does far more
than check BASIC keywords Hke
PRINT for correct spelling. It passes
judgment on everything else in the
BASIC line as well. Using a modi-
fied version of BASIC, it performs a
phantom execution of each new line,
performing most of the same error
checks BASIC would use if you ran
the line in a program.
To do this, the Syntax Checker
switches out the computer's BASIC
and switches in a special, modified
BASIC which it prepared when you
started it up. The phantom BASIC
"runs" the line to perform normal
error checks, but stops short of ac-
tually completing the commands.
This method can flush out a multi-
tude of errors, including missing
colons in multistatement lines, mis-
placed commas and parentheses,
type mismatches (putting a string
where a number belongs, and vice
versa), missing parameters, illegal
operations (like A$ = B$-C$) and
many illegal quantity errors as well.
Runtime Errors
But there are certain things the Syn-
tax Checker cannot do. A program
can contain innumerable flaws even
when each of its lines is syntactically
correct. To illustrate, type NEW and
press RETURN, then type in the
following line and enter RUN.
1000 NEXT
The NEXT statement in line
1000 is perfectly good BASIC— the
64 understands exactly what it
means — but NEXT only makes
sense when it's preceded with a
matching FOR statement. This is a
runtime error, so called because it
can't possibly be detected without
running the program. When you
type in this line by itself, the Syntax
Checker can tell that NEXT is a
word from the BASIC language, but
there's no way it can tell whether
it's logical to put NEXT at that par-
ticular point in the program. There
are many runtime errors (DEVICE
NOT PRESENT, OUT OF DATA,
etc.) which can't be found until a
program is finished and running.
Thus, while the Syntax Check-
er looks after the fundamentals,
catching obvious mistakes, it's up to
you, the programmer, to make sure
your creation makes sense as a
whole. It can't read your mind to
figure out what you really meant the
program to do. Though it eases the
burden of programming, the Syntax
Checker can't perform magic:
There's no way it can turn a badly
structured, illogical program into
something that works, and certain
errors are simply beyond its scope.
Qulrl(S And Compatibility
You should also keep in mind that
ordinary BASIC lets you do some
very odd things without signalling
an error. LIST 10-30ABCDEF looks
very strange, but doesn't cause an
error. DIM A(5.001,26.3) is silly
(you can't dimension a fractional
number of array elements), but
there's no "illegal fraction" error
message to tell you about it.
In short, BASIC has some
built-in limitations when it comes
to error checking. Fortunately, most
of its quirks are rarely encountered,
and the ones shown above don't
cause any real harm. But because
the Syntax Checker uses existing
BASIC routines, it's subject to the
same quirks and anomalies. It
doesn't sense errors that BASIC it-
self can't detect.
You may already have won-
dered whether the Syntax Checker
can be used along with other pro-
grams like "MetaBASIC." The Syn-
tax Checker works with MetaBASIC.
However, MetaBASIC's QUIT com-
mand turns off the Syntax Checker,
too. So unless you want to turn off
both programs at once, you must
restart the Checker with SYS 49152
whenever you QUIT MetaBASIC.
As you may know already, the
more utilities concurrently acHve,
the more fragile the system is likely
to become. No matter what other
programs you're using at the time,
it's always best to disable the Syn-
tax Checker with SYS 49152 before
you run a BASIC program.
Space doesn't permit a detailed
explanation of how this program
works, but here's a brief synopsis.
When the Syntax Checker sets up,
it copies BASIC and the computer's
operating system (OS) from their
normal places in ROM (Read-Only
Memory) into underlying free
memory, then modifies them exten-
sively. When you enter a numbered
line, the program turns off the com-
puter's ROM and uses the modified
BASIC and OS. After it scans the
input line, the Syntax Checker
either adds it to the program or
signals an error. In both cases,
ROM is turned back on before the
blinking cursor reappears. ®
54 Best of COMPUTE! and Gazette
Programming Books
from COMPUTE!
COMPUTE! Books offers a line of programming books for tlie intermediate to
advanced Commodore 64 and 1 28 users. These reference books take you
beyond BASIC and into machine language programming, helping you learn
about memory maps, addresses, the new GEOS, and time-saving routines you
can add to your own programs.
COMPUTEI's 128 Programmer's Guide
Editors of COMPUTEI
ISBN 0-87455-031 -9 444 pages
A complete guide to the Commodore 1 28, this book explores BASIC 7.0. shows
you how to create graphics and sounds, explains how to program peripherals,
ar>d introduces vou to machine language programming,
SI 7.95
Mapping the Commodore 128
Ottis R. Cowper
ISBN 0-87455-060-2 704 poges
The comprehensive memory map and progrommof's guide that provides a
detailed explanation of the inner workings of the Commodore 128 including
memory nxanagement. BASIC 7.0, I/O chip register, the operating system,
system RAM, and more.
Si 9-95
Machine Language Routines for the Commodore 128
ond 64
Todd Heimarck and Patrick Parrish
ISBN 0-87455-085-8 592 pages
This collectkDn of machine language routines is o must for every Commodore
1 28 and 64 mochin© language programmer. Scores of these routines can sim-
ply be inserted into your own programs. Included is the assembly language
code with easy-to-understand documentation and instructions. There is a
companion disk available for $12.95 that includes all the programs in the book
(858BDSK).
SI 8.96
MAPPING
THE
COMMODORE
A comfv«fvrWv9 marrcrv giAi* rv BA9C oiO
Programmii
the
COMMOD(
MACHINE
LANGUAGE
ROUTINES
:^= FOB THE ==
COMMODORi
64/128
TM'ehcYcfepBac' refeten
to the CommoOcnG M C(
Programming the Commodore 64 Revised:
The Definitive Guide
Roeto Collin V^st
ISBNaB745&081-5 642 poges
This bestselling, encyclopedic reference guide which covers the Commodore
64 In its entirety has been updated to include information on the new Conv
modore 64C and GEOS. from Berkeley Softworks, There is also a disk avoilaaie
for $12.95 which includes the programs in the book (507BDSK1
$24.95
Mapping the Commodore 64 and 64C
Sheldon Leemon
ISBN 0-87455-082-3 324 pages
An update of the bestselling memory mop and programming guide that's a
necessity for intermediate and advanced programmers. This definitive
sourcebook has been expanded and now covers the new icon-based GEOS
(Graphics Environment Operating System) with clear descriptions of how to
moke it work for you. For BASIC and machine language programmers of both
the Commodore 64 and 64C.
$16,95
These books are now available at your local book or computer store.
You con also order directly from COMPUTEI by calling toll free 800-346-6767 (in NY coll 212-887-8525) or
by moiling your order to COMPUTE! Books, P.O. Box 5038. F.D.R. Station, New York, NY 10150.
Customer Service hours are 10:00 am-12:30 pm and 1 :30 pm-3:00 pm EST, Moriday-Fridoy
Please include $2.00 postage and handling per book or disk. NC residents odd 5 percent soles tax, and NY residents add
8.25 percent soles tax. Please allow d-6 weeks for delivery.
COMPUTE!' Publications Jnc®
COMPUTEI books are available outside the United States from
subsidiaries of McGraw-Hill International Book Company.
X BASIC
This powerful BASIC extension for
the Commodore 64 focuses on two of
the most complex areas to program:
graphics and sound. With 33 new
commands, it offers control of high-
resolution screens, character and
screen display functions, sprites, and
sound.
Two of the most complex and te-
dious areas of programming on the
64 are graphics and sound. Even
some of the most elementary
graphics and sound rouhnes re-
quire a lot of programming time
and long strings of POKEs. "X
BASIC" (extended BASIC) is a pro-
grammer's language that does
much of the difficult programming
for you, allowing you more time to
design and experiment.
Written entirely in machine
language, X BASIC adds 33 graph-
ics and sound commands to BASIC:
7 commands for hi-res; 7 for screen
and character functions; 6 for sprite
creation and manipulation; 10 for
sound; 2 for joystick control; and 1
for exiting the program.
To load X BASIC, type LOAD
"X BASIC",84. To activate it, type
NEW and press ENTER, then type
SYS 49152.
All commands can be used in
direct mode as well as program
mode. Some commands need to be
followed by one or more parame-
ters consisting of numbers or
strings. The parameters can be vari-
ables (X or N$) or actual values (5 or
"HELLO"). Numeric parameters
must be within a specified range.
Attempting to use a number that's
outside the range of legal values
results in an ILLEGAL QUANTITY
error. Also, if you try to use a num-
ber for a parameter which requires
a string, or vice versa, you'll receive
Kevin Mortin
a TYPE MISMATCH ERROR. (Note:
All X BASIC commands are in boldface
capital letters. Command parameters
follow in boldface lowercase letters.)
Hi-Res Graphics
Commands
HIRES: Turns on the hi-res screen
and sets it to multicolor mode. {All
hi-res graphics in X BASIC are set
up for multicolor mode.) The hi-res
screen is located underneath the
Kernal ROM starting at $E000. You
can POKE directly to the screen, but
you can't PEEK the screen unless
you switch out the Kernal.
TEXT: Returns to normal text mode.
Always use TEXT to go from hi-re$
mode to normal display. Do not exit
hi-res with RUN /STOP-RESTORE.
CLEAR colorO,colorl, color!,
colorS: Clears the hi-res screen and
lets you choose the colors for plot-
ting. ColorO corresponds to the 01 bit
pair, colorl the 10 bit pair, and
color! the 11 bit pair. Color3 is the
background color. The values for
the colors correspond to the POKE
values in the range 0-15.
COLR color#'. Selects the color for
the PLOT and LINE commands on
the hi-res screen. Its parameter al-
lows you to select one of the four
colors (0-3) defined by the CLEAR
command.
PLOT x,y: Plots a point on the hi-
res screen in the current color. If the
color is 3 (the background color), it
effectively erases a point. The x-
coordinate is the distance from the
left edge of the screen and ranges
between 0-159. The y-coordinate is
the distance from the top of the
screen between 0-199.
LINE xl,yl TO x2,y!: Draws a line
between xl,yl and x!,y! in the cur-
rent color (or erases like PLOT). The
x-coordinates range between 0-159,
the y-coordinates between 0-199.
HPRNT string: Prints a string on
the hi-res screen at the location set
by LOCATE (see below). When the
hi-res screen is in multicolor mode,
the characters will appear distorted.
Multicolor mode can be turned off
with the MULTI 0 command.
HPRNT defaults to the uppercase/
graphics character set. If you'd pre-
fer the upper/ lowercase set, enter
this line: POKE 50819,216. To re-
turn to uppercase/graphics, POKE
50819,208. You can mix characters
from the two character sets on the
same screen.
Screen And
Character Commands
BRDR colori^: Sets border color.
Co/or# must be a number from
0-15.
SCREEN color#: Sets screen color.
Colortt must be a number from
0-15.
CENTER string: Centers a string of
characters on the current line of
text, then prints a RETURN. The
string must be 1-38 characters long.
LOCATE x,y: Positions the current
printing location on the text or hi-
res screen to x,y. X must be between
0-39, and Y between 0-24.
MULTI 0 or MULTI l,co/or2,
color!: MULTI 0 turns off multicol-
or mode. MULTI 1 (with the two
color parameters, between 0-15)
turns on multicolor mode. Colorl
corresponds to the 01 bit pair, and
color! the 10 bit pair.
EXTND 0 or EXTND l,colorl,
color!,color3: EXTND 0 turns off
extended background mode.
EXTND 1 (with background color
parameters, between 0-15) turns
on extended background mode.
Characters with a POKE value of
64-127 use colorl for the back-
56 Best ot COMPUTE! and Gazette
ground, characters 128-191 use
color2, and characters 192-255 use
color3. Note: extended background
color mode cannot be used when the
hi-res screen is turned on.
CSET block: Copies the uppercase
character set from ROM to RAM at
&/ocA:*1024, Block should be a num-
ber between 1-15. This command
is handy when using custom char-
acters. You may have to prevent
BASIC and the character set from
interfering with each other by mov-
ing the bottom (or top) of memory.
Here's a short program that
demonstrates the use of some of the
hi-res and screen and character
commands above. After X BASIC is
activated, type in this program and
run it. You might try changing
some of the X BASIC command
parameters for various effects.
100 BRDRO
110 HIRES
120 CLEAR 1,2,3,4
130 LOCATE 10,10
140 HPRINT "HELLO"
150 FOR I = 0TO3
IW COLRI
170 LINE 0,0X0159,159
180 LINE 0,199 TO 159,0
190 NEXT
200 GETA$:IFA$ = ""THEN150
210 TEXT
220 END
Sprite Commands
All of the sprite commands are for
use in text mode only. You cannot
use these commands for putting
sprites on a hi-res screen.
SPRITE sprite if, blocKcolor: De-
fines a sprite. Sprite^ is the sprite
number (0-7), block is the block
number of the sprite definition
(0-255), and color is the sprite color
(0-15). The sprite shapes can be put
in any free area of memory from
0-16383. You may have to move
the bottom or top of memory to
avoid memory conflicts.
SPRAT sprite #,xexp,yexp,priori-
ty,multi'. Sets the sprite attributes
(characteristics). To turn an attri-
bute on, use 1; to turn it off, use 0.
Xexp expands in the x-direction,
yexp in the y-direction. The priority
parameter determines whether the
sprite has priority over screen char-
acters. For example, if you want a
sprite to pass over a screen charac-
ter, the sprite has priority, thus a
parameter of 1. If the sprite is to
pass under a screen character, the
parameter should be 0. The multi
parameter makes the sprite multi-
colored. The colors are specified
with SPRMULT.
SPRMULT colorl,color2:
SPRMULT sets the two additional
sprite colors used in multicolor
mode. The parameters must be
within 0-15.
ASPRITE sprite^: Activates a
sprite. Sprite-^ must be 0-7.
DSPRITE sprite*: Deactivates a
sprite. Sprite# must be 0-7.
MOVE sprite if ,x,y: Moves a sprite
to the coordinates (x,y), based on the
upper lefthand comer of the sprite.
Sprite^ must be 0-7. X must be in
the range 0-511, y in the range
0-255. Note that the coordinates do
not correspond to the screen coordi-
nates; some locations may cause
sprites to be partially or completely
off the visible screen area.
This short program is a basic
example of how to create and ani-
mate a sprite:
100 BRDR OrSCREEN 11
110 SPRITE 1,123,7
120 SPRMULT 1,3
130 ASPRITE 1
140 FOR J = 0 TO liSPRAT 1,J,J,J,J
150 FOR I=0TO350
160 MOVE 1,L100
170 NEXTLJ
Sound Commands
SID: Clears the SID (sound) chip.
VOL volume#: Sets the volume
register. VolumeiP must be 0-15.
ENVELOPE voice #M,sr(,pulse
width): Sets the attack, decay, sus-
tain, release, and optionally (paren-
theses indicate an optional
parameter) the pulse width. Voiced
must be 1-3. Ad (attack and decay)
and sr (sustain and release) each
must be in the range 0-255. Pulse
width must be in the range 0-4095.
WAVE voice it, waveform(sync)
(ring): Sets the waveform. You
must specify the voice number fol-
lowed by T, S, P, or N for triangle,
sawtooth, pulse, and noise, respec-
tively. Optionally, you can add s for
synchronization, and r for ring
modulation. Here are some exam-
ples: WAVE 1,TSR (triangle wave-
form with synchronization and ring
modulation); WAVE 3,PR (pulse
waveform with ring modulation);
WAVE 2,SS (sawtooth waveform
with synchronization).
Quick Reference Chart For X
BASIC Commands
Hi-Res Graphics Commands
HIRES
TEXT
CLEAR color0,colorl,color2,color3
COLR color #
PLOT:r,y
LINE xl.yl TO x2,y2
HPRNT string
Screen And Character Commands
BRDR color #
SCREEN color#
CENTER string
LOCATE x,y
MULTI 0 or MULTI l.colorl,color2
EXTND 0 or EXTND Uolorl,color2,
colors
CSET block
Sprite Commands
SPRITE sprite »,block,color
SPRAT sprite #,xexp,yexp,prioritt(,multi
SPRMULT colorl,coior2
ASPRITE sprite #
DSPRITE sprite it
MOVE spritelt.x.y
Sound Commands
SID
VOL volume *t
ENVELOPE voice*t.ad.sr(,pulse width)
y/AVE voice #,waveform(st/ttcXring)
FRQ voice #, frequency
GATE voice k, on /off
FCUT cutoff
FRSN resonance
FMODE type
FILTER voice », on /off
Joystick Commands
STICK joystick #
BTN joystick it
(joysticktt's must be in parentheses)
Reset Command
QUIT
FRQ voice if, frequency: Sets the
frequency in the range 0-65535.
Voiceit must be 1-3.
GATE voiceif,on/off: Gates a
voice on or off. Voiceit^ must be 1-3
followed by 0 to turn the gate bit off
or 1 to turn it on.
The following sound com-
mands deal only with filters. Some
programmers may not be interested
in these, but if you have a serious
interest in 64 sound, you'll find
these handy.
FCUT cutoff: Sets the cutoff fre-
quency. Cutoff must be in the range
0-2047.
FRSN resonance: Sets the filter res-
onance. Resonance must be in the
range 0-15.
FMODE type: Selects the filter
Best ot COMPUTEI and Gozette 57
type. Type can be H for high band
filters, L for low band, B for band-
pass, or a combination of these. For
example, FMODE HBL for all types;
FMODE HL for high and low.
FILTER voice It, on /off: Turns the
filter on or off. Voice# must be in
the range 1-3 followed by 0 to turn
off the filter or 1 to turn it on.
To demonstrate the sound
commands, type in this program.
By playing with the parameters,
you can produce some most unusu-
al effects.
100 SID
110 VOL 15
120 FOR I = 1T03
130 ENVELOPE L15,240,2000
140 FILTER 1,1
150 NEXT
160 FRSN 15
170 FMODE H
180 WAVE 1,TSR
190 WAVE 2,SS
200 WAVE 3,P
210 GATE 1,1
220 GATE 2,1
230 GATE 3,1
240 FRQ 1,4000
250 FRQ 2,6000
260 FORI = 100TO2000
270 FCUT I:FRQ 3,20000-1*10
280 NEXT
290 SID
Joystick Commands
The parameters for these com-
mands require parentheses ( ). Note
the examples in the descriptions
below.
STICK joystick it: Reads the joy-
stick direction, joystick^- must be 1
to read port 1, or 2 for port 2. This
comm.and returns a value in the
renge 0-8, so it must be used like a
finction (X = STICK(1), for ex-
ample). Values 1-8 correspond to
t*^ e eight possible directions as
s' own in the figure. The value is 0
i'^^ -he joystick is centered.
BTN joystick it: Returns a value of
1 if the firebutton is pressed, or 0 if
it's not. Joysticks must be 1 or 2. As
with STICK, this command is a
function. A good way to use it is
witiiin an IF-THEN statement (IF
BTN(1) = 1 THEN ...).
Reset Command
QUIT: Disengages X BASIC by re-
setting all vectors to normal.
Space doesn't permit a lengthy
discussion of how to program
graphics and sound on the 64. If
you've had experience in these
areas, you'll find this utility an effi-
cient tool. If you're a beginning pro-
grammer, you may wish to consult
the Programmer's Reference Guide
for specific information on pro-
gramming graphics and sound. O
1541 COMPATIBLE
DISK DRIVE
TO ORDER CALL TOLL FREE
1-800-544-6274
We guarantee your satisfaction! ^^^ n iiV^
NORTH AMERICAN
PRODUCTS
INTERNATIONAL
5892 MAIN STREET /SPRINGFIELD, OR 97478/503-741-1222
' FACTORY AUTHORIZED
COMMODORE REPAIR CENTER
1-800-772-7289
(312) 879-2888 IL
C64 Repair irciowYi .42.95
C128 Repair raoNLT,. 64.95
1541 Permanent
Alignment 29.95
1541 Repair 79.95
1571 Repair 79.95
Amiga Repair
irciONLri 77.73
Amiga Drive
Repair 149.95
Printers CALL
Monitors CALL
Other Equipment . . CALL
CALL BEFORE SHIPPING
PARTS AND LABOR INCLUDED
FREE RETURN SHIPPING
|APO, FPO. AJRADD iTO.0O|
24-48 HR. TURNAROUND
jSubjea to Para Avall«blltty|
30 DAY WARRANTY ON AU REPAIRS
COMMODORE PARTS
C-64 Power Supply 34.95
128 Power Supply 59.95
C-64 Over Voltage Sensor 19.95
Other Parts CALL
(Plui S3.00 Shipping/Handling I
All parts for Commodore equipment usually In stock
For Parts Call (312) 879-2350
Dealer Discounts Available
§<
TEKTONICS PLUS, INC
150 HOUSTON STREET
BATAVIA, IL 60510
CUP AND SAVE
128 Editing Functions
For Commodore 64
This powerful programming aid
makes all of the important Commo-
dore 128 screen-editing functions
available on the Commodore 64.
If you own a Commodore 64, you
may wish that you had the extra
screen-editing functions available
on the Commodore 128. With just
two quick keystrokes, you can turn
auto-insert mode on or off, clear
selected portions of the screen, set
and manipulate screen windows,
move the cursor instantly to any
location, and more. In the 128,
these functions are called ESC (es-
cape) functions because they are ac-
tivated with the ESC key. "128
Editoring" adds 14 ESC functions
to the 64, plus a NO SCROLL key
to prevent screen scrolling, and
three new functions that aren't
even available on the 128. It also
allows all keys to repeat.
This program loads with the
command LOAD "128 EDIT-
ING",8,1. After the program has
loaded into memory, type these
commands in direct mode (without
line numbers):
NEW
SYS 49152
Don't forget to press RETURN
at the end of each line. After you've
entered the second command, the
program sets the screen border to
the same color as the background as
a signal that it is active.
New Escape Functions
Since the 64 lacks an ESC key, this
program uses the back-arrow key
(*-) in its place. In the remainder of
this article, the term ESC refers to
Jim Allen
the back-arrow key at the upper left
comer of the keyboard. ESC func-
tions require two keypresses: First
you press and release the ESC key;
then you press a second key. For
instance, to delete a line, you press
ESC and then D.
If you change your mind after
pressing ESC and decide not to per-
form an ESC function, simply press
a key that has no special ESC func-
tion {a CRSR key, for instance). If
you need to type the back-arrow
character itself, press ESC twice in
succession. A description of the
ESC functions follows.
Erase/Delete Functions
ESC @ Clears the screen from the
current cursor position to
the bottom.
ESC D Deletes the line the cursor
is on, scrolls the screen up
to fill that line, and places
the cursor on the left screen
margin.
ESC P Erases from the start of the
current line up to and in-
cluding the current cursor
position.
ESC Q Erases from the current
cursor position to the end
of the current line.
fl Erases from the line the
cursor is on, including the
current line, to the top of
the screen or window.
f3 Deletes the character under
the cursor and moves the
remainder of the line one
space to the left.
Insert Functions
ESC A Turns on autoinsert mode,
which allows you to insert
printable characters with-
out using the INST key.
The cursor and other edit-
ing keys work as usual. RE-
TURN cancels autoinsert
mode {this is not true on
the 128).
ESC C Cancels autoinsert mode.
This works the same as
ESC C on the 128. (Note,
however, that some of
Commodore's documenta-
tion for the 128 confuses
ESC C with the ESC O
function.)
ESC O Cancels insert and quote
modes, allowing you to use
cursor keys and other edit-
ing keys after pressing
INST or typing a quotation
mark.
ESC I Inserts a blank line at the
current cursor position,
scrolling the remainder of
the screen down and plac-
ing the cursor on the left
edge of the display.
Cursor Movement Functions
ESC J Moves the cursor to the be-
ginning of the line.
ESC K Moves the cursor to the
end of the text on the line.
f7 Moves the cursor to the
lower left comer of the
screen.
Miscellaneous Functions
ESC T Sets the top of the window.
Blocks the top portion of
the screen from being
erased or scrolled. The cur-
sor position determines the
top row of the new win-
dow. To reset the window
Best of COMPUTEl ond Gazette 59
to the full screen size, press
the HOME key twice.
ESC V Scrolls the contents of the
screen or window up one
line. A new blank line will
be scrolled in at the bot-
tom, and the previous con-
tents of the top line will be
lost.
ESC W Scrolls the contents of the
screen or window down
one line. A new blank line
will be scrolled in at the
top, and the previous con-
tents of the bottom line will
be lost.
SHIFT Enables the NO SCROLL
feature. The NO SCROLL
key on the 128 lets you
pause printing to the screen
display {for instance, when
you are listing a program).
To pause a scrolling dis-
play, press SHIFT or SHIFT
LOCK. When you release
the key, printing resumes.
ESC Z Disables all 128 Screen
Editor functions. You can
reenable the ESC functions
at any time with SYS
49152. (On the 128, ESC Z
clears all TAB stops, a func-
tion not available in this
program.)
You should be aware that these
functions affect logical lines, not
physical screen lines. On the Com-
modore 64, a physical line is always
40 characters long, but a logical line
can overlap two physical screen
lines. Thus, for example, the ESC V
function may scroll the screen up-
ward two lines if the topmost logi-
cal line in the current window is
more than 40 characters long.
The window function (ESC T)
does not prevent you from moving
the cursor above the window
boundary with the cursor keys. If
you venture above the boundary,
strange results will occur. (If this
happens accidentally, perform a
warm start by pressing RUN/STOP-
RESTORE; then restart the program
with SYS 49152.)
The delete-line function (ESC
D) is intended for deleting a line
which lies between two other lines.
If you simply want to erase a line
(particularly a line on the bottom
screen line), use the ESC Q fur^ction.
This program works by copy-
ing BASIC and the Kemal ROM
into underlying RAM and modify-
ing them. It also modifies two im-
portant vectors: IQPLOP at $306
and IBASIN at $324. Locations $02,
$B6, and $334-$338 are also used
for various purposes.
Quick Reference
Function
Keys
Erase from cursor 10 end ot screen
ESC@
Delete current line
ESCD
Erase from start of line to cursor
ESCP
Erase from cursor to end of line
ESCQ
Erase from cursor to top of window
tfl
Delete to right of cursor
tf3
Enable auto-insert mode
ESC A
Cancel auto-insert mode
ESCC
Cancel insert and quote modes
ESCO
Insert a line
ESCI
Move cursor to star! of line
ESC J
Move cursor to end of line
ESCK
Move cursor to lower left comer
tf7
Set top of window
ESCT
Scroll screen/window up
ESCV
Scroll screen/window down
ESC W
Pause scrolling
t SHIFT
Disable Editor
t ESC Z
Enable Editor
t SYS 49152
f differcni from Commodorf 138
@
TRIVIA
TUNES
Excellent parly game!
Similar to T.V.'s "Name That Tune!"
with a TRIVIA TWIST
A "Couch Potatoes"' dellghtll
It you like Meviswn. ir yaj iiiie tii.ia, inen you il love mis game TV. TRIVIA TUNES is an ei
challenge lor one or iwo iilBy«n oi isams Ana ii's a gaim ina wnole lamily can play
LISTEN as one of ovef 200 ranODmly sfllecied television snow irwne songs is playe<]
note by noie
READ linle-tinown lanoomly se^ecind invia atwuT Iha stKM-
Ooes ii give you a nmt or iniow you o» allogeiner'
O' choose noi lo lead '"via aooot IMis stiow - you OociOe
HIT VOUR BUZZER i> you tmow Itie anawet. lo nama inai Invti luiw. <f ^ou'n wrong
your opponent gets a cnonce Bui it you'ie riglii inen you gm Ihe score' And ym may
even quality lot tl>« Hall o< RecorOs" But Oont get ovei-contKleni because anottie' tmia
lune II on it's voy
So >(Mp your l\ana on ilial Ouzm as you continue to ptay TV. TRIVIA TUNES.
t^ak te» irtt Cot^fnotyna M r*« Mirti Qtrrv rtquwn on« joyfio
To aMi. send cnecii or money order lor t1S95 {plut KiX) iNppingnMndllng) to:
D.S.S.
Donavan Scientific Software
Qames Oepr
PC Boi 391368
Wouniain View. Cali'ornLa Ma39
ATTN OnJer Deak
Also cuiienlly availaQle
"Tlivia Tune DisH Creator "
Create and edit youi own Invia lune dola tor ma with any of Oannan ScMnUHc SoftwM's Tnvia Tune
programs (S1J95|
Availaole Spring 1988
"TV Tuna Disk II ' {1907-1388 TV ihowsl
A aupplemsntat Invia lur>e disk tor your TV Trivu Tunes fxogriin.
"Hock Trrvia Tunes & "Movie Tnvia Tunes" coming sooni
RENTING SOFTWA RE
ISN'T HARD!
It's as easy as picking up the
phone and giving your order. If
you have a credit card, it's even
easier. The hardest part may be
waiting for the mail to come!
We have software for ATARI,
COMMODORE, IBM, APPLE,
520ST and AMIGA.
CALL NOW
FOR COMPLETE LIST
Call toll free outside Texas: 1-800-433-2938
- Inside Texas call: 81 7-292-7396
WEDGWOOD RENTAL
5316Woodwav Drive
Fort Worth, Texas 76133
Archive:
Two-Drive Backup
For Commodore 64
Now you can copy entire disks at
machine language speed with this
convenient backup program for the
Commodore 64 with two 1541 disk
drives. It also works on the new Com-
modore 128 in 64 mode.
Sooner or later it's bound to hap-
pen. You'll make an unconscious
error, or lightning may strike while
you're resaving a program, or the
family dog will chew a few disks for
dinner — and an important disk will
be utterly destroyed. If you have a
backup copy, of course, such acci-
dents aren't fatal. You take a mo-
ment to pat yourself on the back,
pull out the archive disk, and go
back to work.
If you don't have a backup, it's
like watching a gold ring slip off
your finger and go clanking down
the drain. In the long hours spent
reconstructing what you've lost,
you have plenty of time to reflect
on the wisdom of archiving your
work on a regular basis.
Archiving is one of those grim
tasks that's easy to postpone. BASIC
programs (like COPY/ ALL on your
1541 Test/Demo disk) are slow, and
may not copy machine language
(ML) programs or sequential files.
Even good single-drive backup pro-
grams keep you tied to the com-
puter, tapping your fingers until it's
time for the next disk swap.
Fast And Convenient
"Archive" offers a better way: It
links two drives together to take the
misery out of backing up important
Philip I. Nelson
disks. To speed things up, it's writ-
ten entirely in machine language
and copies only those disk sectors
which actually contain data. But be-
cause it loads and runs just like a
BASIC program, it's easy for any-
one to use, even beginners.
You may find this program
valuable even if you don't own two
disk drives. Put your drive together
with a friend's and swap several
disks during one session. Or take it
to a user group meeting to speed up
the duplication of public domain
library disks. Since 1541-format
disks work with other Commodore
computers. Archive running on a
Commodore 64 can also copy disks
that will be used with the Commo-
dore 128, VlC-20, Plus/4, 16, and
4040-format PET/CBM. (Of
course, a program written for one of
these machines may not work on
another. Also, Archive cannot copy
Commodore 128 CP/M disks.)
Incidentally, Archive cannot
duplicate commercially protected
software. Protected disks invariably
contain deliberate errors (which
shut down the program) or data
hidden in unused sectors (which
Archive does not copy).
Getting Started
To use Archive, activate it like
a BASIC program by typing LOAD
"ARCHIVE",8 followed by RUN.
(For this program, do not use ,8,1
after the LOAD; just use ,8.) If
you're already comfortable using
two drives, you needn't read any
further, since Archive prompts you
at each step. Just pop a disk in each
drive as instructed, press the i7 spe-
cial function key, and relax while
Archive does its work. (If you've
never used two drives before, see
"Setting Up Your System" below.)
Archive displays your source
disk's Block Availability Map (BAM)
graphically on the screen, updating
the display as copying proceeds.
Thus, you can tell at a glance how
much of the disk is used and how
much has been copied. The number
at the lower right of the screen
shows the sector being copied; the
graphic display shows which sectors
have already been copied.
If you want to abort the copy
for any reason, press the fl special
function key to return to BASIC.
(When you abort the copy process,
the archive disk is incomplete and
may be garbled. You can reuse it
immediately with Archive, but do
not use it for anything else without
reformatting it as explained below.)
Once the copy is done, press the f3
function key to copy another disk,
or press fl to quit. Whenever you
exit Archive, it clears the screen and
reports the status of each drive.
Quicic Formatting
Since Archive always makes a com-
plete disk copy, it formats the ar-
chive disk with a NEW command.
Formatting renames the disk and
erases everything it contained
before. You'll notice that the archive
disk is formatted in only a few sec-
onds rather than the usual couple of
minutes, and without the usual
knocking sound. To save time and
minimize wear on the drive. Archive
Best of COMPUTEI and Gazette 61
We Won't Be UNDERSOLD
1st In Price, 1st In Svpport, Isl In Warranty
15 Day Free Trial • 90 Pay Immediate Replacement Policy * Free Catalogs
Call before /ou order, our prices may be lower • All sale prices expire 11-30-87
80 Column Printer • SVa'' Letter Size
Big Blue Printer
Dot Matrix
Heat Transfer
Upper Case
Lower Case
Underline
Enlarged
Affordable
Plus More
No One Sells This
Printer For Less!
Sale$
List $199
39
95
(Add $7.50 Shipping*)
This printer was made by Canon " for IBM. The Big Blue primer comes ready lo hook up lo the serial port of the
IBM" PC jr, XT, AT & Compatibles. Plus with our low cost adapter cables you can connect this printer to the
Apple" II. lie, lie and Compatibles, Atari " computers. Commodore ° 64. 128. SX-64, Vic 20, Plus 4, and more.
RS-232 Adapter- Adapter for IBM - PC. AT, XT & Apple- 11 series RS-232 port. (Specify male or female). .. List $49.95 Sale $19.95
Apple" llc& Laser 128 Interface- With printer driver program for graphics and text List $49.95 Sale $19.95
InlelligenI Commodore " Interface- Prims graphics and icxi. Use Prim Shop and more List $49.95 Sale $19.95
InlelligenI Alari " Interface - (Excludes Acari I2(X)) Prims graphics and text. Use Prim Shop and more List $49.95 Sale $19.95
Paper (2 Rolls) List $19.95 Sale $ 5.95 Single Sheet Paper (Qly. 500) List $29.95 Sale $12.95
IBM, Apple A aiwnT t (wimodorr. AuriA l4<r aif rcgnTcrcO ^'aJcm*»^^.>l jnicrTLiiioniil Dusii^^\ Mdk^1^w^. Apple t-ompji^r. Canon Int. CuniiiKKlorc Buunnt Machinft. A^m liw A Video TKhnqlO|pft Rcipccii*dy
SVa" Floppy Disk Sale
Double-Sided • Double-Density • 100% Certified
24* each
*1 Boxof 100 — »24.00
(24* each)
Poper Economy Sleeves (100) — $5.(X)
Hi-Speed ( 1 60- 1 80 CPS) Printer
NLQ-180 Printer
Near Letter
Quality
No One Sells This
Printer For Less!
Lifetime List $499
Warranty *
Sale $ 1 y 095
(Add $10.00 Shipping')
• Near Letter Quality Selectable From Front Panel Controls • High Speed Dot Matrix
• Letter Quality Modes • 8K Buffer frees up computer 4-times faster • Super Crapliics
Pica, Elite, Italics, Condensed • Business or Personal • Tractor/Friction • 15 Day Free Trial
• Lifetime Warranty on Print Head* • 6 Month Immediate Replacement Policy *
COMPUTER DIRECT (A Division of PROTEaO
22292 N. Pepper Rd., Barrington, IL. 60010
311/382-5050 or 311/382-5244
IVe Love Our Customers
• lllinoii rasidanii odd f'-% »o1»i (an All ordari mult b* >n U S Dolhirt
W» ihip to oil point, in lh« US. CANADA PUERTO RICO I APO-FPO
PI*Oi« coll lor chorga, Qut,id« conlinanlol U.S or C.O.D MAIL OMHMS
•(KIo** coihiat chwck. mon«y ordar or p«r,onal check Allow 14 doy)
dalivary. 3 id 7 lor phon* ocd«ri and I doy •xpraii moil Pric*, ond
ovoilobilllv iub|*ct to chong* withoul nolic*. (Mofiilori only ihipp*d in
cont,n.o,o. US) ^^^^ _ MASTERCARD - C.O.O.
We Won't Be HNDERSOLD
15 Pay Free Trial • 90 Pay Immediate Replacement Policy * Free Catalogs
Call before you order, our prices may be lowfer • Sole prices expire 1 1 -30-87
C64c Computer
Included with each computer is the GEOS Program:
word processor and a versatile drawing program.
With
GEOS!
Sale $ I M9S
(Add $10.00 shipping.*) ^ ^^ ^^ Llst $249
C 1 28D Computer
Includes a full 128 detached keyboard and 1 57 1 drive,
with 128K of user memory expandable to 640K.
Sale
(Add S10.00 shipping.*)
^479
95
List $599
1581 3V>"Disk
Drive
Over 800K bytes of formatted storace on
double-sided 3.5" Microdiskettes.
NEW
Sale$
(AddSIO.OO shipping.-)
List $249
Complete
C64c System
INCLUDES
• Computer
• Difk Drive
• Monitor
• Printer
• Software
*395" System inciudest
• Commodore 64c Computer
• Excellerator Plus Disk Drive
• Hi-Res 12" Monochrome Monitor with connection cable
• Big Blue tVi" Printer with interface and 2 rolls of paper
• GEOS Program: Word processor and drawing prorgram
Sale$
(Add $35.00 shipping.*)
395
95
List $1049
(3121 382-
For IBM & Apple
(3121 382-
Call For Atari & Commodore
Bl
Mall
COMPUnR DIREa
22292 N. Pepper Road
Barrington, IL. 60010
We ho\e Our Customers
uses a shortened NEW command:
the equivalent of OPEN 15,8,15,
"NO:filename" without a disk ID.
The abbreviated NEW com-
mand works only on a disk that has
been previously formatted. To use a
brand new disk, you must prepare
it first with a full NEW command:
OPEN15,8,15,"N0:/i7enflme,/D".The
filename can be up to 16 characters
long. The ID can be any two letters
or numbers and should be unique
for each disk. The 1543 User's Man-
ual contains more information
about formatting disks.
Setting Up Your System
Although the Commodore 64 has
only one serial port connector, the
1541 disk drive has two, letting you
hook up more than one drive at a
time. Since the drives are chained
together in a series, this arrange-
ment is often called daisy-chaining.
Connect the first drive as usual,
then plug the serial cable from the
second drive into the extra serial
port connector on the first drive.
When more than one disk
drive is active, each drive must be
given a different device number so
the computer can tell them apart.
The 1541 is factory-set as device 8,
but it can also have device numbers
9-15. Archive uses device numbers
8 and 9, reading from drive 8 and
copying to drive 9. You must always
put the source disk (the original) in
the drive that's device 8 and the ar-
chive disk (the copy) in the drive
that's device 9.
If both of your drives are de-
vice 8, don't despair. You can easily
change one of them to device 9. The
change is temporary; the drive re-
verts to device 8 wlien you turn off
the power. Here's the procedure:
1. Turn on the drive that you want
to change to device 9. Make sure the
other drive is turned off. Now you
can change the device number
either by running the DISK ADDR
CHANGE utility program on your
1541 Test/Demo disk, or by typing
in direct statements.
To use DISK ADDR CHANGE,
load the program from the 1541
Test/Demo disk and enter RUN.
Follow the program's instructions,
then skip to Step 2 below.
You can also change the device
number by entering the following
statements in direct mode (with no
line numbers). Press RETURN after
you type each line:
OPEN 15,8,15
PRINT#15,"M-W"CHR$(119)CHR$(0)
CHR«2)CHR$(32 + 9)CHR${M + 9)
CLOSE15
2. It's a good idea to verify the
device number change. Put a disk
in the drive, then type LOAD"$",9
and press RETURN to load its di-
rectory. After the blinking cursor
returns, type LIST and press RE-
TURN. If you see the directory, the
change worked and you may pro-
ceed to step 3. If you get an error
{probably ?DEVICE NOT PRE-
SENT), turn off the drive and repeat
step 1.
3. Turn on the other drive. This
drive will remain device 8 (the
source drive). Now load and run
Archive, inserting the disks as ex-
plained in the instructions. The
source (original) disk goes in device
8, and the archive (copy) disk goes
in device 9. As an additional pre-
caution, you may want to write-
protect the source disk by taping
over the notch in the sleeve.
In theory you can daisy-chain
several drives to a 64, but in fact the
1541 doesn't enjoy sharing the seri-
al bus. The drives should always be
turned on one at a time, not simul-
taneously (as would happen with a
power strip). Printer interfaces that
draw power from the 64's cassette
port are notorious for causing disk
errors, and other peripherals can
affect system voltage levels even if
they're not turned on. Depending
on your system, you may need to
unplug other peripherals before
using Archive.
Initialization
Before it starts copying, Archive ini-
tializes each disk to test whether
devices 8 and 9 are active and if each
contains a formatted disk. The ini-
tialization command transfers infor-
mation (disk name, ID, etc.) from
the disk into the drive's memory to
prepare it for handling the disk.
If this step fails, it means one of
the drives is not ready to go. Ar-
chive displays the status of both
drives and returns you to BASIC. (If
you forget to change one of the
drives to device 9, Archive can't
read its status; press RUN/STOP-
RESTORE and proceed as ex-
plained below). Enter these lines in
direct mode (without a line num-
ber) to retry the initialization:
OPEN 15,8,15, "IC'rCLOSE 15
OPEN 1 5,9,1 5,"I0":CLOSE 15
When you enter each line, the
drive motor should run and its red
light should glow. After one or two
seconds the red light should go off
and stay off, and you should be able
to run Archive. If one or both of the
red lights blink continuously, turn
off both drives and repeat the setup
process. The drive makes a knock-
ing sound if you forget to insert a
disk or try to use an unformatted
disk for the archive.
is Your Drive Healthy?
In ordinary use your drive works
intermittently. It may spend 30 sec-
onds loading a game for you, then
sit idle for 30 minutes while you
play. Copying a full disk with Ar-
chive is far more demanding work,
requiring several minutes of contin-
uous running. If one of your drives
is misaligned, tends to overheat, or
has other mechanical problems,
don't be surprised if you experience
occasional errors. When an error
occurs during the copy process. Ar-
chive stops copying, reports the sta-
tus of both drives, and returns to
BASIC.
Such errors are especially like-
ly to crop up when the source disk
is nearly full. For mechanical rea-
sons it's harder for the drive to ac-
cess the disk's outer area than the
area near the middle. To make
things easy on itself, the drive al-
ways starts storing programs in the
middle of the disk, leaving the out-
er tracks empty until there's no
room left elsewhere.
Archive's BAM display lets
you observe this storage scheme.
When the source disk contains only
a few programs, they'll all be stored
in middle tracks (near track 18). The
outermost tracks (1 and 35) are
usually the last to be used. If your
drive consistently has trouble ac-
cessing outer tracks, it's probably
misaligned. The same problem can
result if the disk was formatted on a
badly misaligned drive.
1541 ML Programming
To shorten and speed up the pro-
gram, all of Archive's 21 variables
and pointers are located in the zero
page (lowest 256 bytes) of memory.
64 Best ot COMPUTE! and Gazette
Zero page machine language in-
structions run faster and use less
memory than instructions that ref-
erence higher memory addresses.
The computer can find what it
needs by checking only one byte,
rather than wading through a two-
byte address in search of the same
information. In time-critical pro-
grams like Archive, which execute
certain routines many thousands of
times a minute, the microseconds
you save can add up to a significant
difference in running time.
Many programmers have trou-
ble learning to handle disk files in
machine language. For those who
are interested, here's an outline of
Archive's main routines.
S0852-0863 Initialize device 8
$0864-0878 Initialize device 9
$0879-0919 Error— report status
$0919-0981 Read BAM from source disk
$09B2-0A32 Display BAM and disk name
$0A33-0A7E Short NEW destination disk
$OA7F-0A8F OPEN 3,8,15 command channel
$0A90-0AA0 OPEN 5,9,15 command channel
$0AA1-0AB4 OPEN 4,8,4,"#" buffer channel
$0AB5-0AC8 OPEN 6,9,6,"#" buffer channel
$0B94-0C42 Subroutine— copy a block
$OBCE-0CO4 Read block from source disk
$0C05-0C42 Write block to archive disk
S0C43-0C5C Subroutine— initialize disk
$0C94-0CA4 Subroutine — check error chamiel
SOCCO-OCCB String— BAM Block Read lUl)
WCCC-OCDF String buffer-short NEW
SOCEO String- "#" for buffer channel
$0CE1-0CE2 String— "10" to initialize
$OF04-OFOF String buffer— Block Read (Ul)
SOFIO-OFIB String— Block Write (U2)
$0FF3 256-byle data buffer starts here
First the program maps the
source disk's BAM on the screen to
record which sectors contain data.
Then it copies each used sector in
turn, reading it from the source disk
and writing it to the archive disk.
Note that to read a disk sector, you
should always use the Ul direct
access command rather than B-R
(Block Read). Likewise, the U2
command must be used in place of
B-W (Block Write). Despite what
your user's guide says, the B-R and
B-W commands are defective and
should never be used. 0
Fontier
128
Tapan Desai
This thoughtfully designed program
provides all the features you could ask
for in an 80-column character editor
for the Commodore 128. The custom
characters you create with this pro-
gram can be used in CP/M and Com-
modore 64 mode as well as
Commodore 128 mode. An 80-column
monitor and disk drive are required.
The 80-column video display of the
Commodore 128 is a significant im-
provement over the chunky 40-
column display of its predecessor,
the Commodore 64. In fact the
128's 80-column resolution com-
pares very favorably with those of
machines costing much more. One
thing the 80-column screen lacks,
however, is a character set of its
own: It borrows the familiar 40-
column character definitions. These
characters do not do justice to the
superb resolution of the 80-column
screen, since they were designed to
overcome the limitations of a coars-
er screen format.
"Fontier 128" helps you create
new 80-column fonts. It gives you
complete control over character de-
sign and manipulation and makes
extensive use of the 128's window-
ing abilities. The program is entire-
ly menu-driven: All you need to do
is choose options from the onscreen
menus and follow the program's
prompts. Best of all, the fonts you
create with Fontier 128 can be in-
stalled and used independently
with other programs — in CP/M
and Commodore 64 mode as well
as 128 mode.
Before you run the program, be
sure that your 80-column monitor
is properly connected and that the
80-column screen is the active dis-
play. Also, check that the 40/80
DISPLAY key is depressed to the
80-column position so that the 80-
column display will remain active
after you press RUN/STOP-RE-
STORE. Since the program runs in
FAST mode, it does not work at all
with a 40-column monitor.
Four Windows
When you run Fontier 128, it
spends a few seconds initializing,
then it displays a screen containing
four windows. Here's an explana-
tion of what the windows contain.
The pattern window is located
at the upper left. All pixel-level
work is done here. The window
displays an enlarged view of the
current character (the one you are
editing), the character set number
(0 or 1), and the current character
number (0-255). The blinking ele-
ment in the pattern window is the
pixel cursor.
The character set window is
centrally placed. It shows all the
characters of a set in their true size.
Best of COMPUTE I and Gazette 65
KX-PI080I
. 179^^'KX-P1Q91i
1 W/2 RIBBON PURCHASE^
KX-P1092/
240
C.P-S.
279
95'
KX-P1592
1BO
C.P.S.
_ , 10801-11
$OyQ95* { 1091
^IKOSHA
SP180VC
1$ 129^5*
SP1000VC
^13995*
ALPS ALQ200
24PIN/C0L0R
240 C.P.S. DRAFT
lYR. WARRANTY
80 C.P.S. LO.
EPSOM/IBM
COMPATIBLE
fAvatex
1200 Baud... *7995'
1 200 Internal... «99«5
1200 H.C «9995'
2400 Baud... « 199^5*
'w/cable purchase
DISKS h ACCESS
S'ADS/DDoow)
3Vt SS/DO 130 KM)
MOUSE PAD...
CASIO C2101 ,
$1 .30
$1.00
$6
$250
COMMODORE
5'^ Diskette
includes Tyvek Sleeves & I
3'y^ DISK CASE (30)
51/4 DISK CASE (75)
DISK HEAD CLEANERS
1750 RAM
SPECIALS
Commodore Logo *25
Accounts Rec S20
Silent Butler $10
Super Gtapfiix Gold $CALL
Codewrtter $20
Joysticks f'om $5
^Ouliet Surg Strip $20^
FSD-2
' Quieter
' Cooler
► 1 yrWarrl
s 14995-
'Packaoe Pricing
f S commodore
Educator 64 ^^^V
$-|4g95- 4|jj|j
f E commodore
SFD 1001 (1 Meg)
M7995 _^
4040 . . % CALL ^^B
8250 . .$ CAU* ^nJ^^^
^E commodore
Hard Drives \ .^
9060 ^■H
M50' pal
^E commodore
160 C.P.S.
Printer .^^^^^-^jA
with PC '^S5SV
Interface ^^^J^^r
M50T
^ XETEC/I.C.T. CALL
■CompWlWy RtturBulwcl ^
AMIGA NEW ^rJ'Sr
KCLbCAOCO Faery laie Ath
(jUary
S IS
S10S
S 36
S 30
GmioiTO
Sculpl 3D
Viia Write
CAlligraDnei
S 42
S 60
S 90
S 60
Bard s Tale
Cnessmasler ZOOO
WDckl Tour Gott
MariHe Madness
Peaasus
HoebMs
:^
Pnwnie
WwdPerteci
Laser Sovi
Surgeon
S 75 Ean Weaver Basebai
S2«0 Pertect scurw
S 36 ViOeoscaDe 30
S;4 00
SZ4 00
1800
1800
. 10-00
.. 2* CD
MirtwPirir 21-00
OQie Z^.OO
URvna IV 36.00
Unmau Wizard 24.00
Bird's Tale II . M 00
AifloOud 30.00
Saatt* 2100
Jifflcncas Ci« 2100
Aruc Fcx 24,00
Mar^vTiIles 900
MINOSCAPE
(MMKHr or t» Crawn ICW|21,0O
BopandWrMd* 18.00
R* 18.00
Supw Stv Hodtiy NEW 21.00
XFWtoi 18,00
rSpOiU 18.00
Wmw 1B.00
HAyProtKI 18.00
fMM 18,00
Oodwm 18.00
Luscfwr nr*ilB 18.00
HMM «^^.«..8p«« 117.00
FlgMMi^ 18,00
Ajwiic SCALL
Law ol me West tSOO
lesl Drive SCALL
Ace ot Aces IB.OO
Com-cs 1 B DO
PBECISION
SuperDase 128 .. ^ SSOQO
Supeinase 64 _^ O**^ *0 00
SKMrxnpita SOf.ftt . 4000
Suoeraoa M._ ,. y, . . . 40 00
H tk-rivtlev
riSoftuorl(«
GEOS Sp»c«i 04,00
QEOSRrtMkI 18.00
QEOSCMhck 21,00
WrlhrMMShop 30.00
QMdn 24.00
QMCdOQitfk ICWX.0O
OmU* HEW 24,00
GEOS 128 SCALL
GeODualS^ 3600
(rammer , ^^-^V
Abacus
Mill
900
tSG.OO
2400
3600
24 00
24 00
24 00
24,W
36.00
36.00
36.00
S««r PKk 64 SpacMl t36.00
S4W PKfc 128 4S.00
Pocket Wnwf 2ff^<er>Pt«vMr EACH 36.00
SK«r Pbc* 2 (128) . 60.00
PockM WnWf 12B/FlW/T>l«insr EACH 30.X
Ptx*M Wriiw MFMPlMww . EACH 24.X
GEOS in and Out (Disk)
BUK 12S
etSK64
Cadpat t2S
Cadp*64
Cturtpak 128
CntrtMliM
Cob(ir64
Cow 128
Super C Compief 64/128
Sever Pascal
AcWiSoH
PorM 124.00
Tllinlc 18.00
LJtryrth 21.00
«•«» 21.00
LastNmia SCALL
MaOierli : 2100
iDoFuelElim .„...., SCALL
QiRMlMtr 24X10
lAalcSIudo 18A)
Maniac Mansion SCALL
SPRINGBOARD
CwlifcM tMar SpKitlS2B-00
NmfSioom (30.00
OpAnl 18.00
C»pAn2 2400
KnigNO* NEWt24.aO
OiammU 21,00
GoWen Path SCALL
FranU* QoM Holy 21.00
PKm 24.00
TMdngTMctMt MOO
OuidalTNM* NEW 24.00
UNISON WORLD
SCALL
% 48
S1B0
SI20
ALL SOFTWARE AI
LEAST 40% OFF
AnGMiy
hlGA>¥2
Prmi Mvier
Ctfd mrtra
Havt wara
Pitti wire
HI TECH
steoo
1600
2100
seoo
e.x
eoo
9.00
BrrjdeftjundSoftuarc
«^>nisrio(i SpsoHtSSX
GrwMoUb. EA tS.OO
Cwman SwwMgo 2t 00
KwUska 18.00
Prrt sJnp car*. ZI.W
DW MCF. 120 t36,00
Swilcalc 128 38.00
W>r*«fn»r3 3000
AI buamssMN 3800
Pirtr»«r64 36.00
PKtnw 128 42,00
SyMiPwWi 36,00
Oeskiw PuUisnei SCALL
MicroProse
GuwNp SpKitf (2000
F-15 21,00
Pioiect Steaitn f qnier SCAll
Aiilmne Ranger SCALL
Sfcrt $Mvk« 24.00
PMn NEW 2400
TcfiGunmr 1800
XeteC Inc
FoM Msiei II 64 UO.DO
foKMitttr 128 a&OO
Ucfo L BasebU
General Mgi
Stal Onk
86 Tevn Qsk
GcmSonc Haato
Gettysburg
KimplgrtMe
Ptiamase 2
Rngol Ztffir
Rud WtrJOQO
Shard oi Spms
WlufdsCnMn
124 00
2400
15,00
1Z.0O
S1S.0O
36.00
38.00
24,00
24-00
24.0
24,00
24,00
^vt^jM SpKMt22J0
Bad Warrior SCALL
Slieel Sporl 24 00
Wbrtd KmM cramp 18.00
S«mT«rQ«nKN 24.00
St*i«Cyd» 24JXI
WbrklGtmw ...H.0O
faoQMl 2«I0
%MPm a4i)0
Winwr Qmm MOO
SubBMOt ICWMJ»
1 lOGIC
BO^Simll SpKMtiaiO
SarwylM 12.00
J« 30A)
RxKbil .- M40
B«hii mm
^ACCESS
aioo
Ecl>elon 27 00
MM dMi iMdNtOMl 8PKW2ZJ0
lOthFnm* M.OO
Ewe Tountminl itOO
Toum«T»r« 1 itOO
TilplBPl* 1100
Fnnui Cotm iZdO
NEW SOFTWARE/BOOKS ARRIVING DAILY SCALL
£
[PRICES MAY BE LOWER! SCALL)
^commodore
64c *1 29®5'
128 «18995-
128D 'Call
C64 . .IHEFURBISHEO) . *99®S
'package pricing
EXCEL-71 *Call
2002A
SCALL
1581 .7777. $199"
1541c S169^'
1571 $219"
1901 (mooochrom»J....®99^^
ie02c $18995
1902A $249«
0KIMATE20...^12O^
1351 *3995
Plugs Plot SCALL
Roland ^^ ,,
Plotters *Call
1764 RAM... ®1 3995
i^r^ PRINTERS
c r • n I c s
*1 9995 i^r ^i 4995
NP-10 NX-10
NB2415 • NR15 • LASERS • SCALL
NL-10 ^^^ NX-15
ImH PURCHASE OF TWO RIBB0HS~1
SIDECAR NOW AVAILABLE...*699"^}
mUGA
500 $Call
SPECIAL PROMO
2000 ...$Call
LAST CHANCE
A1000...S650
A1000R...$500
•FKfuibBliM By CommoOwe
GENLOCK
$220°°
IG8OMOOEM.
$120°°
256K
$8Q0D
0I6IVIEW
'120~
IOIO0HIVE »200°°
40 MEG... •90000
FUTURE SOUND *120«'
2 MEG
20 MEG
«349«
»649«5
MARAUDER II
•24
IMEG*oc" •280°°
G064 EMULATOR
igggs
Ce commodore
IBM COMPATIBLE
PCIO-l/
NEW
LOWER
PRICES
$CALL
•512K
• 360K Dual
Sided Drive
• CGA Board
• One year warranty
• Parallel Port
• Serial Port
• GW BASIC
• DOS 3.2
SIDEKICK
BY BORLAND
PCI 0-2
DUAL
DRIVE
640K
$550.00 Alone
•Wiih putcfiase of 1901a 1902 A MSOAIon*
™800-433-7756
CUSTOMER SERVICE 313427-0267 Tae
IN MICH. 313-427-7713
Mondav thru fiidiv - 10:00 A.M. to B:00 P.M.
U^f - 10:00 A.M. to 6:00 PM, |t.)
SCHOpL P.ajsACCEPTED (
M.C.S.
20 MEG.. .'299^5 s«B.t..
ED CALL FOR TERMS
30MEG...'34995
DEALER INQUIREES INVITED
No Su'cfwrji tw MCfVIS»'OISCOVfH S<yr> nowiH ,p. irjffic
hi 'ilurni mult luo Rt I Mxchwidiu found dilKlin •»* bi ri«Kii4 n 'VtKti U IMHB
Kf nn> Hi do rrai alto rtltmdi fw dttxln giaducli »■ <»■ pfaducli rnai « ri«i parftni
ulnlKloiihi W« m«* M guaitnim Iv pioduct |Mrto>in*nci km mvrni back guaiifitMi
njit b« h«ndM dn*cth| until ItM nwiutKturf Cill lix sruppng & runNng nto
12864 FARMINGTOH ROAO. LIVONIA. Ml 4B150 Ac cannol guatanrM comDtlibilily
The blinking character in this win-
dow marks the current character
and is referred to as the character
cursor.
The dialog window on the right
displays prompts and receives in-
put from you. When you begin the
program, this window shows a
menu of special keys.
The menu window is a static por-
tion of the screen which displays the
various options available to you.
One-Key Commands
Every command in Fontier 128 is
invoked with a single keystroke.
Here's a description of what each
command key does.
General Commands
Key
Description
cursor keys Move the pixel cursor in the
pattern window,
fl Move character cursor up.
f3 Move character cursor down.
15 Move character cursor left.
f7 Move character cursor right.
STOP Restore original (40-column}
character set and stop
program.
A Alternate between character
sets 0 (uppercase/graphics)
and 1 (lowercase/uppercase).
Character Manipulation
Commands
Key Description
+ Turn pixel on and move
cursor.
— Turn pixel off and move
cursor.
R Reverse character(s) and
move character cursor.
I Invert character.
@ Rotate character clockwise.
SHIFT-
CLR/HOME Clear current character.
t2 Slide character pattern up,
M Slide character pattern
down.
(6 Slide character pattern left.
f8 Slide character pattern
right.
M Memorize character(s) start-
ing from the current
character.
C '^opy memorized charac-
ter(s) from the current char-
acter onward. (An M
command should always
precede this command.)
Disk Commands
Key Description
S Save Font file. Files saved by this
option are program files. They may
be loaded and RUN like any BASIC
program in 128 mode. Press RE-
TURN to abort.
L Load Font file (don't try to load a
file created by any other program).
Press RETURN to abort,
$ Display disk directory.
What You See Is What
You Get
When you change a character defi-
nition in the pattern window, the
change appears immediately in the
character-set window, too. The ad-
vantage of this system is that you
can see immediately how a charac-
ter will look in its normal size and
in relation to other characters in the
set. The menu and dialog windows
always use the character set not
being edited at that time. If you're
editing uppercase/graphics charac-
ters (set 0), all text in the dialog and
menu windows will use the lower-
case/uppercase set (set 1), and vice
versa. It's best to edit only one char-
acter set at a time. For example, if
you change all the letters in the
uppercase/graphics set to new
shapes and then press A to edit the
lowercase/uppercase set, the text in
the menu and dialog windows will
use those new shapes and will be
unreadable. The solution is to com-
plete all your editing of one charac-
ter set, save your changes, and then
restore the original character set
before switching to edit the other
set.
Once you've created and saved
a custom character set, how do you
use it? With Fontier, it's easy. When
you save a character set, the pro-
gram automatically adds a routine
to the character set data that will
install the new character set for
you. You don't need Fontier to load
the new character definitions; sim-
ply load and run the font file as you
would a BASIC program. For ex-
ample, if you use Fontier to design
an italic character set and save it
using the name ITALIC. FNT, you
can enable your custom character
set at any time by typing RUN
"ITALIC.FNT". You must not have
a hi-res graphics area allocated
when you run the font file. For
example, Fontier allocates the hi-
res area (see the GRAPHIC 1 state-
ment in line 100) to create an area
of reserved memory. You must re-
claim this space before running a
font file. Use the statement
GRAPHIC CLR to deallocate any
existing graphics area. The built-in
font loader program will delete it-
self after the new font is loaded.
{You should note, however, that
loading and running the font file
will overwrite any existing BASIC
program.)
Once a new character set is in
place, it behaves exactly like the
original character set. It is not af-
fected by RUN/STOP-RESTORE,
and will be preserved intact if you
switch to CP/M or Commodore 64
mode. For instance, you can run an
80-column CP/M word processor
or telecommunications program
with your own, personal character
set. The same is true of any pro-
gram written for a 128 in Commo-
dore 64 mode that takes advantage
of the 80-column display. Of
course, any 80-column program
that installs its own custom charac-
ter set will overwrite the Fontier
128 character set. When using a
Fontier 128 font in CP/M mode,
keep in mind that CP/M always
uses character set 1. You will not
see any custom characters from set
0 in CP/M mode unless you invoke
the alternate character set escape se-
quence {ESC Gl).
Fontier 128 opens exciting pos-
sibilities in font design. For in-
stance, 80-column word processors
may now include foreign-language
character sets, mathematical or sci-
entific symbols, italics, or subscript
and superscript characters. Special
characters can be used to form
background textures in charts or
graphs, and even to build shapes in
arcade-type games. O
68 Best of COMPUTE! and Gazette
Expandable
Graphics Dump
For The Commodore 1 526
And MPS-802 Printers
Here's a quick and easy way to get
standard- or double-sized high-reso-
lution printouts. The program works
with Print Shop, Doodle, Koala
Pad, and other hi-res screens. Ver-
sions for the 64 and 128.
The April 1985 issue of COM-
PUTEI's GAZETTE contained a use-
ful program titled "1526 Hi-Res
Screen Dump," which allowed 64
owners to print out high-resolution
screens on Commodore's 1526 or
MP5-802 printers— models that
aren't normally capable of high-
resolution graphics printing. "Ex-
pandable Graphics Dump," for the
Commodore 1526 and MPS-802
printers only, goes a few steps be-
yond. It provides for column place-
ment of the normal screen dump,
allowing it to be printed out any-
where from column 0-40. Also, a
blowup option is included. With a
single keypress, you can get a print-
out twice the size (horizontally and
vertically) of the normal one. Two
hi-res screens could be combined
into an SVz" X 11" "poster."
Expandable Graphics Dump
works with almost any hi-res
screen. The 64 version prints
Fred Solmer
graphics screens created with the
Print Shop ("Screen Magic" pictures
only), Doodle, and the Koala Pad. In
fact, it's compatible with almost
any software designed to make hi-
res screens.
A Simple Procedure
Before getting started, be sure your
printer is turned on. If you own a
64, first load your hi-res screen as if
it were a machine language pro-
gram: LOAD" screenname", 8,1. You
probably won't be able to see it, but
it has been loaded into memory.
Then type NEW. Next, load Ex-
pandable Graphics Dump with the
command LOAD "EXPANDABLE
64",8 and type RUN. The screen
prompts make it very easy to use. In
the 64 version, you're first asked if
the hi-res screen was created by
Print Shop. After you press the ap-
propriate key, you're asked to
choose a normal size or enlarged,
double-size printout. After making
this selection, you're asked for a
"space-over" value, 0-40. A com-
puter screen is 40 columns wide,
but the printer has 80 columns. The
space-over number controls the
number of spaces between the left
margin and the printed picture. For
example, if you wish your hi-res
screen to be printed at the left mar-
gin, choose 0. To center it on the
page, enter a value of 20.
On the 128, you may load Ex-
pandable Graphics Dump first with
the command LOAD "EXPAND-
ABLE 128",8. Then use the built-in
graphics commands to create a pic-
ture in GRAPHIC 1 mode. When
you're satisfied with the result, load
Expandable Graphics Dump (if you
haven't already done so) and run it.
In this version, you're asked to
choose a "1:1" (normal size) or
blow-up printout, and then a space-
over value, as described above. On
the 128, you can draw a picture
using the built-in graphics com-
mands, exit to the text screen (with
GRAPHIC 0), and run the program.
It's not necessary to save the picture
to disk and load it back into memory.
Note that the 64 version of Ex-
pandable Graphics Dump is written
for hi-res screens which can be
saved as disk files. This restrichon
means it can't be used to print the
greeting cards from Print Shop, al-
though it works well with the
"Screen Magic" portion of the pro-
gram. Also, Expandable Graphics
Dump handles monochrome hi-res
screens somewhat better than mul-
ticolor screens. ®
Best of COMPUTEI and Gazette 69
Hi-Res Screen Dump
Have you ever created a hi-res picture
or graph and then tried to reproduce it
on your printer? This program allows
you to do just that. The prgram is
compatible with the Commodore 1525
orMPS-801 printers (but not the 1526).
The Commodore 64 allows you to
create high-resolution graphics im-
ages on the video screen. With the
VIC or 64 Super Expander cartridge
or another hi-res program, it's easy
to produce detailed artistic cre-
ations. However, most of these prO'
grams don't provide a method of
printing out these artistic endeavors
once you've finished them. Unless
you leave your computer turned on
indefinitely, your creation is short-
lived.
"Hi-Res Screen Dump" works
with a Commodore 1525 or com-
patible printer. (Note that the new
1526 printer from Commodore is
not compatible with the 1525, and
will not work with this program.)
Bit Transfer
Hi-Res Screen Dump is designed to
transfer the bit information from
screen memory to the printer. Since
the 1525 printer can only accept
seven bits of data at a time in graph-
ics mode (the high bit must always
be set), the eight-bit bytes in screen
memory must be split into odd
units before they are sent to the
printer. Transferring the infor-
mation from screen to printer is fur-
ther complicated since the location
of screen memory bytes must also
Gregg Peele
be calculated, and hi-res screens for
the 64 can be moved to several
different areas of memory.
This program reads data from
the screen one bit at a time starting
from the lower leftmost comer of
the screen. After seven bits, the
program moves to the leftmost bit
of the next row up and prints seven
more bits, continuing up the screen.
After the leftmost seven-bit column
has been printed, the program
starts at the eighth bit over from the
bottom left comer and continues
cycling from bottom to top until the
entire screen has been read. Each
seven bits are combined to form the
byte to be sent out to the printer.
Since the program reads from the
left bottom side of the screen to the
right top side, the printout is a 90-
degree-tumed reproduction of the
screen image.
Hi-Res Screen Dump is written
in machine language. A BASIC
loader (the first several lines of the
program) puts the machine lan-
guage (in the form of DATA state-
ments) into the appropriate location
in memory. The BASIC loader also
prompts you for the width of the
printout. To operate the program
correctly, you must load and run Hi-
Res Screen Dump before you load the
program which creates the hi-res
image.
Selecting A Width And
Making A Printout
You can select either a single-width
or double-width printout by POKE-
ing a 1 (for single width) or a 2 (for
double width) into location 2 (i.e.,
POKE 2,1 or POKE 2,2). This loca-
tion is changed by your selection of
width when you are prompted in
the BASIC program, but can be
changed at any time. A SYS to loca-
tion 52224 will initiate a printout of
the hi-res screen. You can issue this
SYS in direct mode if you have a
design on the screen, or add it to a
hi-res drawing program if you
make sure the machine language is
loaded into memory before the SYS
is encountered. Also, be sure that
the printer is turned on before giv-
ing the SYS.
The machine language for the
program resides at the top of the
64's free block of RAM above loca-
tion 49152 ($C000). This makes it
compatible with the Super Expander
64, but also means that it cannot be
used with the 64 DOS wedge pro-
gram, as both occupy the same area
of memory. The program is de-
signed to print the hi-res screen that
is currently visible. If you want a
screen dump when you are not in
hi-res mode, POKE location 900
with the high byte of the starting
address of the hi-res screen and
SYS to location 52224 -h32. This al-
ternate SYS bypasses the routine
which determines the location of
the hi-res screen. For example, if
your hi-res screen starts at location
57344 ($E000)— as in "Screen-80"—
you would initiate the screen dump
with:
POKE 900,(57344/256): SYS 52256
70 Best of COMPUTEI and Gazette
Sprite Magic:
An All-Machine-Language
Sprite Editor
Sprites make animation on the 64 fun
and easy to program. But actually
drawing and creating sprites with
graph paper can be tedious. "Sprite
Magic" simplifies their creation, and
lets you concentrate on the artistic
aspects of sprite design.
Most of the what you've read about
sprites covers how to program them:
setting them up, protecting memory,
moving and animating them, and
using them in games. But sprite de-
sign is usually left up to you.
A sprite is defined by 63 binary
numbers. The one bits (on) repre-
sent solid pixels. Zeros (off) repre-
sent blank areas in which the screen
background is visible. Normally,
you sketch a sprite on a grid 24
squares across and 21 squares high.
This is three bytes per row (8 bits*3
bytes = 24 bits) and 21 rows of
bytes (3*21=63 bytes). But after
you've drawn the sprite, you have
to convert the squares into binary,
and then into decimal so that you
can put the numbers in DATA
statements.
There are utility programs that
will do the conversion for you, even
editors that let you clear and set
squares with a joystick. Since
you're using a computer, other
functions can be supported to let
you clear, invert, reflect, reverse,
shift, and test out your sprite. The
more work the computer does, the
less you have to think in terms of
binary numbers.
Chorles Bronnon
Sprite Magic offers the best
features of most sprite editors, in-
cluding true multicolor mode, and
pulls it off with the speed and pow-
er of an all-machine language pro-
gram. Sprite Magic's style (and
even some of the coding) is similar
to "Ultrafont + ." Many of the com-
mands are the same, so you can get
up to speed quickly. If you've
learned how to use Ultrafont -I-, it
won't take much to become com-
fortable with Sprite Magic.
Here's how you get it up and
running:
LOAD "SPRITE MAGIC,8,1
Be sure to add the ,1 to the end.
After the computer comes back
with the READY message, type
NEW and press RETURN. This re-
sets some important memory loca-
tions, but leaves Sprite Magic in its
protected cubbyhole at SCOOO.
Doodle
Activate Sprite Magic with SYS
49152. Instantly, the main screen
should appear, with a large 24 X 21
grid. The grid is a blow-up of the
sprite you are editing. The actual
sprite will be seen to the right of the
grid. The flashing square within the
large grid is your cursor. Move the
cursor with either the cursor keys or
with a joystick plugged into port 2.
To light up a blank spot (in other
words, to turn that pixel on), press
either the space bar or the joystick
fire button. If the square is already
lit, it will turn dark. This signifies
that the pixel has been turned off.
The button or space bar thus tog-
gles points on or off. You can draw
your sprite quite easily in this man-
ner. One fine point: With the joy-
stick, you can hold down the fire
button and move the cursor. If the
first point you change was set, then
the fire button will continue to set
points as you move the joystick,
regardless of the other points' origi-
nal state. If the first point you
change was empty, then you can
hold down the fire button and
move about, clearing anything the
cursor passes over. Notice how any
changes are immediately visible in
the actual sprite.
If you've just entered Sprite
Magic, the grid is probably full of
garbage pixels. To clear out the grid
for a new picture, press SHIFT-
CLR/HOME. You now have an
empty area (a fresh canvas, so to
speak) to draw upon. You can press
CLR/HOME without holding
down SHIFT to home the cursor to
the upper-left comer of the grid.
Does the cursor move too slow
or too fast? To change the velocity
(speed) of the cursor, press V. An-
swer the prompt with a number key
from 0 (slow) to 9 (very fast).
Shift, Expansion,
And Symmetry
Sometimes when you're drawing,
it's necessary to reposition the
shape within the grid. The first two
function keys let you shift the sprite
shape around within the grid. If
you shift something out of the grid,
it wraps around to the opposite
side. The f 1 key shifts right, f3 shifts
down. Use the SHIFT key along
with the function key to move in
the opposite direction: f2 moves the
Best of COMPUTEI and Gazette 71
Lyco Computer
Marketing & Consultants
* Special Purchase
ii>i< f on It I • I ««
• 100 cps draft
• 25 NLQ
• EZ Front Panel
Selection
• Auto Single
Sheet Feed
• Adjustable
Tractor Feed
'/"■
NP10
The Real 24-Pin Printer
SEIKOSHA
SL-80Ai
• Letter quality 54 cps
• Quiet (52 dBA)
• Automatic
paper loading
• 16 K
buffer
(bmrted Ouanuty
STAR
MICRONICS
NP-10 S129
NX-10 S159
NL-10 S195
SD-10 S229
SD-15 $349
ND-10 $265
ND-15 $389
SR-10 $379
SR-15 $439
NB24-10 $399
NB24-15 S569
NX-15 S295
NB-15 $769
NR-15 $459
BROTHER
M1109 $195
HR10 Daisy $195
Ml 409 $329
HR20 $339
Ml 509 S365
Ml 709 $475
HR40 $579
2024 leits' Quality. . . $665
Twinwriler
DoI& Daisy .... $$849
SILVER REED
EXP420P $209
EXP600P $539
EXP800P $649
CITIZEN
120D S165
MSP-10 $269
MSP-20 $299
MSP-15 $325
MSP-25 $389
Premiere 35 $469
Tribute 224 $625
OKI DATA
Okimate 20 $119
Plug N Print -,,,$CALL
120 NLQ $189
180 $219
132 $229
192 + $315
193+ $455
292 w/inlerface. . . $455
293w/interface. . . $595
EPSON
LX800 $169
FX86e $299
EX800 $365
FX286e $419
L0800 $429
EXIOOO S489
L01000 $595
Versatile and IBM Compatible
• 160 cps Draft Mode
• 32 cps NLQ
• Word Process
• Friction Feed
(2-year warranty) [F^
Panasonic
'°'''' $169-
TO ORDER
CALL TOLL FREE
1-800-233-8760
IN PA
{717)494-1030
OR SEND TO
LYCO COMPUTER
P.O. BOX 5088
Jersey Shore, PA 1 7740
In-Stock itsms sbippM wilhin 2A hrs. ol order NO deposit on C 0 D. orders.
Free shipping on prepaid cash orders wilhin the Conlinenlal U.S Volume
discounts availaOle. PA resiOenis add sales iax. APO. FPO and miernalional
orders add S5.00 plus 3% lor priontv mail. Advertised orices show 4% dis-
count lor cash, add A"^ lor MasierCaid and VISA Personal cnecks require
4 weeKs c^aiance be<0'a snipping. We cannot guaramee compaiiOiiity. We
only shtp laciory trBsh mercfianOise. Ask about USP Blue and Red Label snip-
ping. All meicliandise earned under manulscturers' warranty Return restric-
tion applicable Return auitioniaiion required. We check lor stolen credil cards.
We accept purchase orders Irom sducaiional instilulions. All items subiact
to change without nofce. ^^^^^^^^^^^^^^_
SEIKOSHA
SPlSOAi S129
SPIBOvc $145
SPIOOOvc $149
SPIOOOi $159
SP1200VC SNEW
SP1200AI SI 65
SP1 200AS
RS232 $165
SLSOAi $299
MP1300Ai $299
MP5300Ai $375
8P5420Ai $889
PANASONIC
10911 S169
10801 $139
3131 $259
10921 $295
3151 $379
1592 $379
1595 $419
10801
Model 2 $154.95
10911
Model2 $174.95
DIABLO
D25 $499
635 $779
D-80IF $1299
1-800-233-8760
PERIPHERALS
IBK
MONITORS
Thompson:
230 Amber TTI /1 2", - - . $86
450AmberTTl/15"...Sl49
980 While TTI/IS'. S695
4120CGA S229
■1160 CGA S2B9
4460 EGA $359
4375 Ultra Scan S525
Panasonic:
1320 $369
1361 $459
Zenith:
2VM 1220 $89
ZVM 1230 $89
ZVM 1240 $119
ZVM 1330 $435
THOMSON O
A sight for sore eyes/**
4120 Monitor
• 14" RGB/Video
Composite Analog
• Compatible with
IBM
• RGB Data Cable
Included
MODEMS
Avatex;
1200i $99
IZOOhc S99-95
2400 S219
MOOi SCALL
SOFTWARE
AcKvlslon
Pebble Beacfl GoU . S24 95
C^amp. Baseball .. . . S24 95
Cnamp BaskelDail . S24.95
ZortiTnlogy S39.95
Leather Goddesses . . S24 95
Moonmist S24 95
Hayes:
Smaftmodem 300 . , .
Smaftmodein 1200..
Smailmodem 2400 .
SI 25
$369
$559
COMMODORE
PC10-1
$229"®^
PERSONAL--£RS!
_ ^_- , PC 10-2
MIcroproaa:
Conlhcl in Vietnam
CtusaOe in Europe
Decision in Desert .
F-15 SinKe Eagle .
SilenI Sen/i(M
Gurtship
• A ready-to-use
package ol
computing power
and versatile
graphics!
• Commodore 1902
monitor optional
$489
Flexible "open
architecture"
design for easy
inslallalion of
variety ot options
640 K RAM and
two 5Va" drives
$589
Mlcrolaague:
Micioleag. BaseOaU
General Manager
Slat Disk .. .
86 Team Disk
S24 95
S24 95
S2495
sao95
S20 95
S28.95
S239&
S189S
S1S.95
$1195
Epyx:
Apshai Trilogy
Creaie A Calendar
Destroyer
Karate Ct>amp
Movie Monster .. ..
Hogoe .
Si. Sports BasKeltKill
Sub Bailie Simulator
Winter Games
WorM Games
S14.95
St 7 95
$2495
S19.95
S1495
SI 9 95
S24 95
523 95
524 95
$23.95
® BLUE CHIP
PERSONAL
COMPUTER
• 100%IBfw1
PC XT
compatible'
$499
(Green, amber
& color monitors
availatite)
PC
COMPATIBLE
HARDWARE
PC S'/. Drive $1IS
MS DOS - BaswSofI $59
BCM 12G Gr. Monitor SS9
BCM 12AAm Monitor S89
BCM 14C Color RGB Monitor $269
BCC CG Color Card $94,99
BCPCPCXTComp $559
Avatex Graphics Card S169
Zut*Brt>oard SCALL
Iomega Bernoulli .,.., SCALL
Hercules SCALL
AST SCALL
AATARr PC
SIralegIc Simulations;
HoadWar 2(XI0
Kamplgruppe . .
Shard ol Spring .
Battle ol Antetiem
Computer Basetiall
Gettysburg
Wizards Crown ,.
Ctiickamauga . .
S24 95
S3S95
S24 95
S35 95
$14 95
$35.95
$24 95
S35 95
^Seagate
Hard Drives for PC Compatibles
20 MEG ....$275.95
30 MEG ....$315.95 <
40 MEG ....$489.95 -^
(DRIVES INCLUDE CONTROLLER)
Will Not
Be Undersold!
HARD
DRIVES
SuBlogIc:
Jet Simulator S31.95
Scenery Japan Si 7.95
Scenery San Fran Si7 95
Scenery *l-#6 S6995
Broderbund,
Ancient An ot War . .. S28 95
Pnnt Shop S32 95
Unison Work):
An Gallery 2 S18 95
NewsMasier S55.95
Print Master $36.95
Firebird:
Siarglidei S2695
GuiU ol Thieves $26.95
Acc«»:
WId CI. Leader Board .
Learnlna Company:
SCALL
S29 95
S24 95
S24 95
S2495
S22 95
Attention Educational
I Institutions:
If you are not currently using our
I educational service program, please
call our representatives for details.
sprite shape left, f3 up.
After you've drawn some-
thing, press F. Instantly, the sprite
is flipped upside-down. Press it
again to flip it back over. Remem-
ber F as the command for Flip. Now
try M, for Mirror. The shape you've
drawn is mirrored left to right. Of
course, if you've drawn something
symmetrical, you may not see any
change.
Now try CTRL-R or CTRL-9.
The sprite will become reversed.
Every square that was on is now
turned off, and vice versa.
A sprite can also be expanded
or contracted either horizontally or
vertically, or both horizontally and
vertically. The X and Y keys on the
keyboard let you do this. Press X to
switch from wide to narrow, or vice
versa. Press Y to switch from tall to
short, or vice versa. Regardless of
your choices, the main grid will not
change size or proportion.
An unusual command is Sym-
metry. I added this command after
some suggestions that many shapes
are symmetrical from left to right,
as if a mirror were put in the middle
of the grid. To enter the Symmetry
mode, press the back-arrow (•-) key
(found in the upper-left comer of
the keyboard). Now, every square
drawn on one side will be instantly
mirrored to the left. Blank squares
are not copied over, though, so you
cannot erase in this mode. This
command is not only quite useful,
but is also a great deal of fun to play
with. To return to normal editing,
press the back-arrow key again.
Notice the number in the up-
per-right comer of the screen. This
is the sprite page number, which
can range from 0 to 255. You start
out at the top of the sprite memory.
The + and — keys are used to go
forward or backward through sprite
shapes. Press the minus key and
see how you now have a new shape
in the grid.
There is a limit to how far back
you can go. If you have no BASIC
program in memory, you can step
back to sprite page number 32.
However, character information re-
sides in sprite pages below 128.
You can still clear the page and
draw a sprite shape on pages below
128, but it won't really register. To
be safe, use only the sprite pages
from 128 on up. If you have a pro-
Quick Reference Chart
B: Cycle through background colors
F: Flip sprite upside-down
J: Move sprite with joystick. Press button when done.
L: Load sprite from tape or disk
M: Mirror sprite from left to right
S: Save sprite(s) to tape or disk
V: Set cursor velocity
X: Toggle X expansion on/off
Y: Toggle Y expansion on/off
CTRL-D: Create DATA statements
CTRL-R or CTRL-9; Reverse sprite
CTRL-X: Exit to BASIC
+ : Next sprite page
— : Previous sprite page
CLR/HOME: Home sprite editing cursor
SHIFT-CLR/HOME: Erase grid
Space bar or fire button: Set/clear points
CRSR keys or joystick in port 2: Moves cursor
Back arrow: Symmetry mode
Keys 1-4: Select drawing color for multicolor mode
SHIFT 1-4: Change a drawing color
fl: Shift right
f2: Shift left
f3: Shift down
f4: Shift up
f5: Multicolor mode
f6: Normal mode
f7: Store sprite to buffer
f8: Recall sprite from buffer
gram in memory. Sprite Magic will
not let you step back past its end.
This protects your program from
being accidentally overwritten by a
sprite shape. If you want maximum
space available for sprite shapes, be
sure to NEW out any BASIC pro-
gram before you SYS 49152. You'll
sometimes want to keep a program
in memory, however. We'll show
you why a bit later.
Programming note: The sprite
page number, when multiplied by
64, gives you the starting memory
location for the 63 numbers repre-
senting the sprite.
Put It In Ttie Buffer
You might use Flip to design two
views of a shape, such as a space-
ship pointing in two directions.
Draw one freehand, then do the
other with nip. Mirror can be used
to design separate left and right
views as well. But what you first
need is a way to copy the original
shape to another sprite area. One
way to do this is to copy the sprite
shape to an area of memory (a buff-
er). You can use + or — to step to
another sprite page, then copy the
buffer to the sprite. This, you may
remember, is the way you copy
characters with Ultrafont +. The
same keys are used in Sprite Magic.
Press i7 to copy the sprite to the
buffer. The grid flashes to affirm
this. Then go to the sprite page
where you want to put the copy
and press f8 (SHlFT-f7). The shape
in the buffer replaces any shape
already in the sprite grid. You can
also use the buffer as a fail-safe
device. Before modifying an exist-
ing sprite, press f7 to save it in the
buffer. Then, if you mangle the
sprite, or accidentally erase it, you
can recall the previous shape from
the buffer.
Computer Disney?
The buffer is also useful for anima-
tion. Since you can change sprite
pages so easily, you can also use
Sprite Magic as an animation de-
sign tool. Cartoons make only mi-
nor changes between frames. Too
much change makes the animation
jerky. So put the first frame into the
buffer, copy it to the next area, then
make a change. Put the new image
into the buffer, copy it again to a
new area, then make another small
change. Continue in this fashion as
you build up a whole series of
frames. Put different but similar
shapes on adjacent pages, then
hold down plus or minus to step
74 Best of COMPUTBl and Gazette
through the shapes. As with car-
toon animation, you will get the
illusion of motion. Use a cursor ve-
locity of 9 for maximum speed. So
even if you don't care to program
sprites. Sprite Magic is a fun tool for
making moving cartoons.
A Bit Of Color
The normal drawing mode lets you
set or clear points, but in only one
color. If you're willing to give up
half as many horizontal points, you
can have four colors to work with.
Multicolor mode lets any square be
one of four colors, but gives you
only 12 pixels across instead of 24.
This is because two dots are
grouped together to give four com-
binations. The colors come from
four memory locations:
Pattern Color location
00
01
10
53281 Background color
register
53285 Sprite multicolor
register 0
53287- Sprite color registers
53294
11 53286 Sprite multicolor
register 1
There are two multicolor sprite
registers, which are shared among
all sprites (in programming, but not
in Sprite Magic, you can have eight
sprites on the screen at the same
time). The bit pattern marked 10 is
unique to each sprite, and comes
from that sprite's own color regis-
ter. Pattern 00 is blank, and what-
ever is underneath the sprite shape
will show through.
The reason for this sojourn into
bits and addresses is that only the
10 bit pattern has a unique color for
that sprite. If you're designing sev-
eral sprites for a game, remember
that anything drawn in that color
can be changed individually for
each sprite. Squares drawn with bit
pattern 01 or 11 will be colored
from two locations shared by all
sprites.
Many sprite editors let you see
how the sprite would look in multi-
color, but you still have to pair up
the pixels yourself, and keep track
of binary bit pairs. No fun! Instead,
Sprite Magic offers a multicolor
mode. When you press f5, the
screen instantly changes. Each
square in the grid is now rectangu-
lar, two squares wide. The cursor
has also been enlarged, and can be
moved about as before in the new
grid. But the way you set and clear
points has been changed, since you
are now working with four colors.
Multicolor Palette
The fire button or the space bar
always sets a point, but you have to
tell Sprite Magic which color you
are currently drawing in. The num-
ber keys 1 to 4 select the drawing
color. The number you press is one
number higher than the binary val-
ue of the bit pairs in the table
above. The 1 key, for instance,
chooses the 00 bit pair, which rep-
resents the background color. In
practice, you are choosing from a
palette of four colors. The 1 key can
be used when you want to erase,
although the fire button can still be
used to toggle points on and off.
When you press a number key
from 1 to 4, the border color
changes to remind you which color
you're drawing with. If you want to
change one of the four colors, hold
down SHIFT while you type the
number. The prompt ENTER
COLOR KEY appears. Now you
have to enter another key combina-
tion. Press CTRL and one of the
number keys from 1 to 8, or hold
down the Commodore key and one
of the number keys from 1 to 8.
These are the same key combina-
tions you use to change the text
color in BASIC. You can also
change the screen background
color by pressing the letter B on the
keyboard until the color you want
appears.
Some Sprite Magic commands
act strangely in multicolor mode.
For example, a shift left or shift
right (done with the fl and f2 keys
respectively) moves the sprite over
by only one bit, which changes the
color assignments. In general, you
must press f 1 or f2 twice to preserve
the same colors. Pressing the M key
(for Mirror) reverses the bit pairs, so
that every 01 becomes a 10. The
effect is that colors 2 and 3 are
exchanged. The R key (Reverse)
also inverts the bits, so that 01 be-
comes 10, 10 becomes 01, 00 be-
comes 11, and 11 becomes 00.
Colors 2 and 3 are switched, as well
as colors 1 and 4.
If you want to go back to nor-
mal (non-multicolor) mode, press
the f6 key (SHIFT-f5). There's noth-
ing to prevent you from designing
both normal and multicolor sprites
on different pages.
If you changed colors in the
multicolor mode, some of the colors
in the normal mode may have been
changed. You can alter these colors
as in multicolor mode. Press SHIFT-
1 to change the color of the empty
pbtels, and SHIFT-2 to change the
color of the on pixels. (You'll be
prompted to press a color number
key after each SHIFT-1 or SHIFT-2
combination. Remember to press
either CTRL or Commodore simul-
taneously with the color key.)
Mobilizing Your Sprite
If you want to try out your sprite in
action, press J (for Joystick). You
can now move the actual sprite
around with the joystick. The speed
of movement depends on the cur-
rent cursor velocity. When you've
finished putting your sprite
through its paces, press the fire but-
ton to return to Sprite Magic. Also,
if you want to test the animation
while you are moving about, hold
down the SHIFT key to step for-
ward through the pages of your
defined sprites, or the Commodore
key to step backward. You can lock
the SHIFT key to keep the anima-
tion happening while you move
around.
Saving Your Sprites
After all your work, you surely
want to save your creations on tape
or disk for future use. You can save
an individual shape, or all the
sprites. Press S (for Save), then
either D (Disk) or T (Tape). Next,
enter the filename. You'll be asked
if you want to "Save all from here?"
If you press N, for No, then only
the current sprite you are working
on is saved. If you press Y for Yes,
then every sprite from the current
sprite to sprite 255 will be saved.
Thus, if you want to save a range of
sprites, be sure to use the minus key
to step back to the first sprite you
want saved.
To recall your sprites, press L.
The Load command loads every-
thing that was saved. If you're load-
ing in more than one sprite, be sure
you step backward far enough with
the minus key so that all the sprites
will fit between the current sprite
and sprite 255. The sprites load
Best of COMPUTE! and Gazette 75
starting at the current sprite page
number. After you press L, enter T
or D for Tape or Disk.
Making Sprite DATA
If you're a programmer, you're
probably more interested in DATA
statements. That way, you can use
BASIC to READ and POKE the
numbers into memory. If you have
some kind of'DATA maker/'you
can run it on the memory used by
the sprite in Sprite Magic (again,
the memory location is the sprite
number times 64). But Sprite Magic
has a special DATA maker of its
own. It's similar to the Create
DATA option in Ultrafont +, but
It's been enhanced.
Press CTRL-D to create a series
of DATA statements from the cur-
rent sprite In memory. Just tap the
key, or you'll get hundreds of
DATA statements as the key re-
peats. Sprite Magic will create eight
DATA statements, with eight bytes
per line. The last byte is not strictly
used. Sprite shapes are made from
63 bytes, but the sprite areas are
padded out so they will conve-
niently fall in 64-byte ranges. To
create DATA statements for anoth-
er sprite, use the + or — key to
move to the correct sprite page,
then press CTRL-D again.
If you have a program already
in memory, the DATA statements
are appended to the end of the pro-
gram, starting with the next avail-
able line number. To add DATA
statements to an existing program,
then, first load Sprite Magic. Type
NEW. Load your BASIC program,
and SYS 49152 to enter Sprite Mag-
ic. You can then load in sprite
shapes and use CTRL'D to add
those DATA statements to the end
of the BASIC program in memory.
You can check to see that these
DATA statements were added by
exiting Sprite Magic (press CTRL-X)
and typing LIST. Your program
should have eight new DATA lines
for each sprite pattern. If there was
no program in memory, the DATA
statements form a program all their
own, starting with line 1. If you
want, you can save just the DATA
statements to tape or disk, using the
normal SAVE command.
To exit Sprite Magic and return
to BASIC, press CTRL-X. You can
5lso use RUN/STOP-RESTORE. ®
Fast Hi-Res
Screen Dump
Pobert F. Mills
This machine language program
prints out screen dumps at high speed
when used with the Epson, Gemini,
and compatible printers. For the
Commodore 128 and 64.
The "Hi-Res Dump" program In
the July 1986 GAZETTE prints out
excellent copies of whatever is on
the hl-res (high -resolution) screen.
Unfortunately, the program is very
slow when used with a non-Com-
modore printer like my Gemini lOX
with Its Cardco +G interface. The
interface emulates the Commodore
graphics commands well — but the
process is slow and it gives the
printhead quite a workout. So, I
dug out my printer manual to learn
more about Its built-in graphics ca-
pabilities. "Fast Hi-Res Dump" is
the result.
Although I wrote this program
for my Gemini printer, it also works
with most other Star Micronics
models, and with most Epson print-
ers as well. In fact, the program will
work with most any printer that
uses the ESC K nl n2 sequence for
printing graphics. The program will
not work with any Commodore print-
er. Refer to the owner's manual that
came with your printer for details of
Its built-in graphics capabilities. Re-
gardless of the printer used, you
must also have an Interface which
allows a transparent mode of oper-
ation. Transparent mode makes the
interface pass all characters to the
printer without modification. This
gives you control over the printer's
special built-in functions. This pro-
gram uses the Cardco convention
whereby a secondary address of 4
in the OPEN statement specifies
transparent mode. For other inter-
faces, it may be necessary to set a
switch on the interface to select
transparent mode. This program
does not work with most third-
party printers that have built-in
Commodore interfaces, such as the
Star SG-IOC or Gemini II.
Printing A Screen
Fast Hi-Res Dump is relocatable, so
you can put this program nearly
anywhere in RAM. The program
will place the machine language at
any address you request. On the
128, either of the RS-232 buffers
(starting addresses 3072 or 3328)
provide excellent areas if you won't
be using an RS-232 device. The free
memory starting at 4864 can also be
used. For the Commodore 64, the
free memory beginning at address
49152 is a good place to put this
routine If your screen or another
program isn't located there. The
program is 221 bytes long, so it
won't fit in the cassette tape buffer.
When you run the program,
you'll be asked to specify a starting
address for the dump routine. The
76 Best of COMPUTE! and Gazette
D 64 $119.95
Get your workspace back again.
Consolidate your 64, 64C or 128 system
with the Command Center.
Just look at all it includes:
■ Built-in AC Power Strip with power surge
and voltage spike protection, line noise filter-
ing and power outlets.
■ Buiit-in Drive/CPU Cooiing Fan to prevent
overheating.
■ IVIoduiar Teiephone Plug with its own
on-line/ off-line telecommunications
switch. (Optional on 64 and 64C).
■ Master AC Switch for easy system
power up.
■ Singie or Duai Drive Configurations with the
standard drive insert. L 128 $149.95
u 64C $129.95
COMMAND CENTER ACCESSORIES
(Specify 128, 64, or 64C when ordering)
Dust Cover $19.95 — covers entire system
Keyboard Cover $19.95 — smoked acrylic
Drive Reset $14.95 — one switch per drive
Short Serial Cable $9.95 — for chaining drives
Modem Switch $9.95 — 64/64C option
Tilt/Swivel fvlonitor Stand $14.95 — see below
(Call for details)
The Command Center will untangle your
wires, unclutter your desk and put peripherals
at your fingertips.
DATA DIRECTOR
1
$39.95
I Share two Commodore- 6-pin serial devices
with one computer.
I Share two computers with one serial device.
IWorks with Commodore" compatible disk
drives, printers, and all interfaces.
I LED Indicates which device is in use.
I Convenient button resets device.
I Saves wear on disk drive serial ports.
I Eliminates cable swapping.
TILT/SWIVEL MONITOR STAND
$14.95
I Swivel base adjusts to desired viewing angle.
I Accommodates most popular monitors.
I Tension adjustment holds stand firmly in
correct position.
I Padded feet to protect surface.
I Cushioned pads hold monitor securely in place.
I Places monitor at ideal viewing level and
position.
SHIPPING AND HANDLING »Commodore IS 3 (egisiered ttaOemarh ol Commodwe Elflcltonics. Lta, ^KETEiC
Continental U.S.
$ 4.50 tor each Command Center
$ 2.00 for one accessory item
$ 3.00 for two or more accessories
APO/FPO/CANADA/Puerto R)co/Hawail/Alaska
$13,00 for each Command Center
$ 4.00 for one accessory item
$ 6.00 for two or more accessories
$2.00 charge for C.O.D. orders
Iowa residents add 4% sales tax
P.O. Box 203
Oakdale, lA 52319
Free 30-day trial offer
and one-year warranty.
For faster service, call
1-800-626-4582 toll-free
1-319-338-7123 (Iowa
Residents)
DEALER INQUIRIES INVITED
r
Ptiont NumMr
FISH-ED
For the commodQr* 64 and 1 2B
"// you're looking for a sensibly priced
positiue learning experience for your
eariy learner, try Fish-Ed."
■ RUN maga/iTie
June 1987
RSH-EDISTHE
EXCITING WAY
FOR CHILDREN
TO LEARN AL-
PHABETIZING, SPELLING. NUMBER
CONCEPTS. AND MATH. THE FOUR
GAMES ARE ON ONE DISK AND YOU
CAN CREATE AND SAVE YOUR OWN
MATH AND SPELLING LIBRARIES IN
ADDITION TO THOSE INCLUDED
WITH THE PROGRAM.
"Fish-Ed is very nicely done, with good
docurr\entatior\, and especially easy for
young players to understand. "
■ MIDNIGHT SOFTWARE GAZETTE
"Fish-Ed is a solid educational tool for
parents and teachers alike. "
■ RUN magazine
$29 95 (US Funds)
(CalKonila residents add $1 80 sales Tax)
Mastercard and Visa orders call COLLECT
805-733-4430 Checks and moncv orders payable to
BUCHANAN SOFTWARE
1 60 North Fairuiew Ave , Suite 146 . Goleia, CA 931 1 7
Dealer and Dintnbulor inquiries uelcome^
(CID=SD
NEW ADVANCED 3-D GRAPHICS
For Commodore 64/128 in 64 mode
View Designs in Multiple Perspectives
A Versa tile 'Fast 360 degree rotation
A 2000 Line Display
4 Printer capability with latest compatibles
> 1520 Platter availability
•A Disk Loading and Saving of Designs
■A Superimpose Designs/ Modify Partial Designs
> Commercial Graphic program compatibility
Professional— Educational— Home Applications
Architects, Engineers, Designers,
Programmers, Students
CAD<3Df< Enter nie into Ihe lasiest growing field in graphic
technology Alaspecialintroductory price 549.95. Add $4.00
for shipping and handling, for CO. D. add dn additional
S4.00, {California residents please include 6% sales tax).
iht Software
2269 CHESTNLTT STREET
SU\TE 162
SAN FRANCISCO, CA 94123
ORDER LINE • (4I5> 923-1081
Dealen/Dlslnbulors inquines welcomed
loader then POKEs the values into
that area and checks for errors. Any-
time you want to dump the image
on the hi-res screen to the printer,
just SYS to the address you specified
for the dump routine. For example,
if you placed the Fast Hi-Res Dump
routine at 49152, use SYS 49152 to
dump your graphics screen. This
can be done either in direct mode or
within a program. The dump takes
just over a minute. On the 128, you
can BSAVE (binary save) the routine
and then BLOAD it wherever you
wish without having to use the load-
er program again. For example, if
you told the loader to place the rou-
tine at address 3072 ($0C00), the
RS-232 input buffer, you could save
a copy of the routine with:
BSAVE "FASTDUMP",P3072 TO P3293
Then when you want to use the
routine, just BLOAD "FASTDUMP"
and SYS 3072. Or, if you have an-
other ML program residing at 3072,
you can use BLOAD "FAST-
DUMP",? address and SYS address.
where address is some other free ML
area. For the 128, make sure that the
routine is loaded into a bank config-
uration where Kemal ROM is visible
(bank 15, for example).
Behind The Dump
Fast Hi-Res Dump is written entire-
ly in machine language. First, the
program opens a channel for talk-
ing to the printer (equivalent to
OPEN 4,4,4 in BASIC). The sec-
ondary address of 4 puts the Cardco
-l-G interface in transparent mode
with line feeds. If you don't have a
Cardco interface, you may need to
change the DATA in line 70. Re-
place the 4 in that line with the
secondary address value that puts
your interface into transparent
mode. (You can ignore this change
if your printer interface instead re-
quires a switch setting to select
transparent mode.) If you do
change line 70, remember to
change the total in line 40 to reflect
the new value. Otherwise, you'll
get a false error message when you
run the program.
Next, the routine sends the
character codes to set up the printer
for 8/72-inch (versus the normal
9/72) line feed length to account
for the fact that the Gemini print
head has nine vertical firing pins.
(It's more convenient when work-
ing with the Commodore graphics
screen to deal with only eight.)
Changing the line feed length re-
moves the gaps between the lines.
At the beginning of each col-
umn to be printed, the sequence
ESC K nl nl is sent to the printer.
The expression nl -\- nl X 256
gives the number of characters to
follow. The program sends ESC K
200 0 for each column because
there are 25 rows in the hi-res
screen, and each row has eight lines
(25 X 8 = 200).
The program prints the screen
contents sideways on the paper,
with each printed dot correspond-
ing to a lit pixel on the screen. The
program scans from the top right
comer of the screen down to the
bottom right comer, through 25
rows of 8 lines. The address of a
particular byte in the screen is {320
X ruw) + (8 X column) + line
+ base, with column ranging from 0
to 39, row from 0 to 24, and line
from 0 to 7. The base address is the
starting address of the screen bit-
map. As written, this is assumed to
be 8192 ($2000). If you want to
dump a hi-res screen located else-
where, just change the 32 at the end
of line 240 to the high byte of the
starting address of your screen. For
example, if your screen is at 16384
($4000), then change the 32 to 64.
(As before, you'll also have to ad-
just the total in line 40 to reflect the
new value.)
Note that there is a one-to-one
relationship between the printed
dots and pixels; this makes the final
printed copy about 4X5 inches.
Like most hi-res dump pro-
grams, this program can't be used
to dump text screens or sprites, but
its speed, small size, and portability
make it a very useful and powerful
utility. 6
78 Best of COMPUTEI and Gazette
Ultrafont+
This powerful custom character edi-
tor for the Commodore 64, which
originally appeared in the July 1984
GAZETTE, has been one of our most
popular programs. Now it's been en-
hanced, and a few minor bugs have
been removed. We think you'll be sur-
prised at its lightning speed, ease of
use, and unique features. It's designed
to let you concentrate on your artwork
instead of programming details.
Anyone who has used graph paper
to plot out characters, then tedious-
ly converted the rows of dots into
numbers can appreciate a character
editor. Instead of drawing and eras-
ing on paper, you can draw your
characters freehand with a joystick.
"Ultrafont + " offers almost every
conceivable aid to help you design
whole character sets.
Load Ultrafont+ with the
command LOAD "ULTRA-
FONT",8,l. After it's loaded, enter
NEW and press RETURN to reset
important memory pointers, then
start the program by typing SYS
49152 and pressing RETURN.
The Display
At the bottom of the screen you'll
see eight lines of characters. These
are the 256 characters you can cus-
tomize, arranged in eight 32-
character rows. Note the normal
character set in the top half, with
reversed images in the bottom half.
A flashing square rests on the at
(@) symbol, the home position of
the character set. Above the eight
rows is the main grid, a blown-up
view of ten characters. The bottom
row of the screen is reserved for
messages. The first time you SYS to
UltrafontH-, you'll be asked wheth-
er you want to edit the uppercase/
Charles Brannon
graphics character set or the lower-
case set.
About The Grid
The grid is like a large window on
the character set. You see the first
five characters and the five beneath
them. Each character is made up of
64 pixels (an abbreviation for "pic-
ture elements"), arranged in an 8 X
8 matrix. A large red box shows you
which character you're currently
editing, and a smaller flashing
square is the cursor you use to set
and clear pixels while you're draw-
ing a character.
You can use the cursor keys
(up, down, left, right) to move the
large red cursor to any character
you want to edit. If you move to a
character not on the large grid (out
of the window), the window auto-
matically scrolls to make the char-
acter appear. You can also look at
the bottom of the screen to move
the larger cursor, since the flashing
square on the character set moves
with the main grid.
The HOME key moves the
small cursor to the upper-left comer
of the grid. If you press it twice, it
takes you back to the top of the
character set — to @.
Use a joystick plugged into
port 2 to control the small cursor
within the grid. If you move the
cursor out of the current character,
the red cursor jumps to the next
character in whatever direction you
are moving. The display at the bot-
tom adjusts, and the grid scrolls as
necessary. This means that you can
ignore the traditional boundaries
between characters and draw
shapes as big as the entire character
set (256 X 64 pixels). There is no
wraparound for the cursor in the
bottom section of the screen. When
it hits an edge, it will go no further
in that direction.
The joystick's fire button is
used to set and clear points. If you
press it when the cursor is resting
on a solid square, the pixel is turned
off. If the square is currently off, it's
turned on. Holding down the but-
ton while you move the joystick
keeps you in the same drawing
mode. If you set a point, you'll con-
tinue to draw as you move. If you
clear a point, you can move around
and erase points all over the screen.
If the drawing cursor is too fast
or too slow, just press V to set the
cursor velocity. Answer the prompt
with a speed from 0 (slow) to 9 (very
fast — but too fast for practical use).
Manipulations
There are several functions that af-
fect the current character (where
the red box is). You can rotate, shift,
mirror, reverse, erase, replace, and
copy characters. The best way to
learn is to play with the functions.
It's really a lot of fun. The following
keys control each function.
Function Keys
fl Scrolls character right. All pix-
els move right. The rightmost
column of pixels wraps around
to the left.
f2 Scrolls character left. Wrap-
around is like fl.
£3 Scrolls character down. All
pixels move down. The last
row of pixels wraps around to
the top.
f4 Scrolls character up. Wrap-
around is like f3.
R Rotate. Rotates the character
90 degress. Press twice to flip
the character upside down.
M Mirror. Creates a mirror image
of the character left to right.
CLR (SHIFT-CLR/HOME) Erases
the current character.
Best of COMPUTE! and Gazette 79
CTRL-R or CTRL-9 Reverses the
character. All set dots are
clear, and all empty dots are
set. The bottom half of the
character set is the reversed
image of the top half.
CTRL-back arrow (•-) Copies up-
per half of the character set,
reverses it, and places it in the
lower half. This way, you have
to redraw only the normal
characters, then use CTRL-
back arrow to create the
reverse character set.
F Fix. Use this if you want to
restore the normal pattern for
the character. If you've rede-
fined the letter A and press F
while the red cursor is on the
character, the Commodore
pattern for A will be copied
back from ROM.
T Type. This lets you try out
your character set. The screen
clears, with a copy of the char-
acter set provided for refer-
ence. You can type and move
the cursor around, just as in
BASIC. This is handy for envi-
sioning sample screens and fit-
ting together multiple-
character shapes. Press the
RUN/STOP key to exit from
Type and return to Ultra-
font +.
Saving And Loading
Character Sets
To save your creation to tape or
disk, press S, then either T for tape
or D for disk. When requested, en-
ter the filename, up to 16 charac-
ters. Don't use the 0: prefix if you're
using a disk drive; it's automatically
added for you. The screen clears,
displays the appropriate messages,
and then returns to the editing
screen if there are no errors. If there
are errors, such as the disk being
full, Ultrafont+ will read the disk
error message and display it at the
bottom of the screen. (Tape users
should remember that the 64 is
never able to detect an error during
a tape save.)
Press a key after you've read
the message and try to correct the
cause of the error before you save
again.
To load a character set previ-
ously saved, press L and answer the
TAPE OR DISK prompt. Enter the
filename. If you're using tape, be
sure the tape is rewound and ready.
After the load, you'll be returned to
the editing screen; a glance is all it
takes to see that the set is loaded. If
an error is detected on a tape load,
you'll see the message ERROR ON
SAVE/LOAD. Once again, if you're
using disk, the error message will be
displayed. Press a key to return to
editing so that you can try again.
Copying And
Moving Characters
You can copy one character to an-
other with function keys 7 and 8.
When you press f7, the current char-
acter flashes briefly, then is copied
into a buffer. Ultrafont+ remem-
bers that character pattern. You can
position the cursor where you want
to copy the character before pressing
f8. The memorized character re-
places the character the cursor is
resting on. You can also use the
buffer as a fail-safe device. Before
you begin to edit a character you've
already worked on, press f7 to store
it safely away. That way, if you
accidentally wipe it out or otherwise
garble the character, you can press
f8 to bring back your earlier version.
Creating DATA Statements
A very useful command, CTRL-D,
allows you to create DATA state-
ments for whatever characters
you've defined. UItrafont+ doesn't
make DATA statements for all the
characters, just the ones you've
changed. After you press CTRL-D,
Ultrafont+ adds the DATA state-
ments to the end of whatever pro-
gram you have in BASIC memory.
If there is no program, the DATA
statements exist alone.
If the screen turns to garbage
when you press CTRL-D, then you
probably didn't type NEW after
loading Ultrafont + . The NEW
command resets some important
pointers after you've loaded a ma-
chine language program from im-
mediate mode.
You can load Ultrafont + , en-
ter NEW to reset the BASIC point-
ers, load a program you're working
on, then SYS 49152 to Ultrafont +
to add DATA to the end of the
program. The DATA statements al-
ways start at line 63000, so you
may want to renumber them. If you
press CTRL-D twice, another set of
DATA statements will be append-
ed, also numbered from line num-
bers 63000 and up. Since the keys
repeat if held down, just tap CTRL-
D. If you hold it down, you may
notice that hundreds of DATA
statements have been created. See
the notes at the end of this article
for more details on using DATA
statements in your own programs.
Exiting Uitrafont+
After you create the DATA, you'll
still be in Ultrafont + . If you want
to exit to see the DATA statements
or go on to other things, press
CTRL-X. The screen will reset to
the normal colors and you'll see the
READY prompt. If you've made
DATA, LIST reveals it. It's best to
enter the command CLR to make
sure BASIC is initialized properly
after creating DATA statements.
One thing to watch out for:
Don't use RUN/STOP-RESTORE
to exit Ultrafont4-. The program
moves screen memory from the de-
fault area at address 1024, and the
RUN/STOP-RESTORE combina-
tion does not reset the operating
system pointers to screen memory.
If you do press it, you won't be able
to see what you're typing. To fix it,
blindly type POKE 648,4 or SYS
49152 to reenter Ultrafont+ so you
can exit properly, via CTRL-X.
Reentering Uitrafont+
To restart Ultrafont+ within the
program, press SHIFT-RUN/
STOP. After you've exited to
BASIC, you can rerun Ultrafont +
with SYS 49152. You'll see the
character set you were working on
previously, along with the message
USE ROM SET? (Y/N). Usually,
Ultrafont+ will copy the ROM
character patterns into RAM where
you can change them. If you press
N, however, the set you were previ-
ously working on is untouched.
Press any other key, like RETURN,
to reset the characters to the ROM
standard. You can copy either the
uppercase/graphics set from ROM,
or the lowercase set.
A Whole New Worid
Of Muiticoior
You're not finished yet. There's yet
another mode of operation within
Ultrafont + , the multicolor mode.
In multicolor mode, any character
80 Best of COMPUTEI and Gaiefte
can contain up to four colors simul-
taneously. One has to be used for
the background, which leaves three
for the character itself. Multicolor
changes the way the computer in-
terprets character patterns. Instead
of a one bit representing a solid
pixel and a zero representing a
blank, the eight bits are organized
as four pairs of bits. Each pair can
represent four possibilities: 00, 01,
10, and 11. Each pair is also a num-
ber in decimal from 0 to 3, and
represents one of the four colors.
Ultrafont+ makes multicolor
easy. You don't have to keep track
of bit pairs any more than you have
to convert binary to decimal. Just
press the f5 key. Presto — the whole
screen changes. The normal charac-
ters are rather unrecognizable, and
the drawing cursor is twice as wide
(since eight bits have been reduced
to four pixel-pairs, making each dot
twice as wide). You have only four
dots horizontally per character, but
you can easily combine several
characters to form larger shapes.
Multicolor redefines the way
the joystick and fire button work.
The fire button always lays down a
colored rectangle in the color you're
currently working with. That color
is shown in the center of the draw-
ing cursor. Press the number keys
1, 2, 3, or 4 to choose different
colors to draw with. The number of
the key is one more than the bit
pattern, so color 1 is bit pattern 00,
and color 4 is bit pattern 11. When
you first SYS to Ultrafont + , the
four colors show up distinctly on a
color TV or monitor.
You can easily change the col-
ors. Just hold down SHIFT and
press the appropriate number key
to change that number's color. You
will see the message PRESS
COLOR KEY. Now press one of the
color keys from CTRL-1 to CTRL-8,
or from Commodore- 1 to Commo-
dore-8. Hold down the CTRL or
Commodore key as you do this.
Instantly, that color, and every-
thing previously drawn in that
color, is changed.
Three of the colors {including
1, the background color) can be any
of the 16 colors. But because of the
way multicolor works, color 4 (rep-
resented by bit pattern 11, or 3 in
decimal) can only be one of the 8
CTRL colors. Assigning it one of the
Quick Reference: Uttrafonf-h Commands
Cursor keys
HOME (CLR/HOME)
V
fl
f2(SHIFT-fl)
f3
f4(SHIFT-f3)
R
M
CLR (SHIFT-CLR/HOME)
CTRL-R, CTRL-9
CTRL-back arrow (-)
CTRL-F
F
L
S
T
£7
f8 (SHIFT-f7>
f5
f6 (SHIFT-f5)
CTRL-D
SHIFT-RUN/STOP
CTRL-X
Move to next character
Moves the cursor to upper-left comer. Press twice to go
back to start
Cursor velocity; answer from 0 (slow) to 9 (fast)
Scrolls right with wraparound
Scrolls left
Scrolls down
Scrolls up
Rotates 90 degrees; press twice to invert
Mirror image
Erases current character
Reverse pixels
Copies upper half of character set, reversed, to lower half
Copies first four rows of characters, reversed, to bottom
four
Fix characters from ROM pattern
Load. Tape or Disk, Filename
Save. Tape or Disk, Filename
Typing mode: RUN/STOP to exit
Memorizes character (keep)
Recalls character (put)
Switches to multicolor character mode
Returns to normal character mode
Makes DATA statements
Restarts UltrafontH-
Exits Ultrafont-t- to BASIC
Commodore logo colors just picks
the color shown on the face of the
color key. Incidentally, it's the color
of bit pattern 3 (color 4) that
changes according to the character
color as set in color memory. The
other colors are programmed in
multicolor registers 1 and 2 (loca-
tions 53282 and 53283), so all char-
acters share these two colors. When
you want to vary a certain color
without affecting the rest of the
characters, you'll want to draw it in
color 4.
Some of the commands in the
multicolor mode aren't as useful as
others. You have to press fl and f2
twice to shift a character, since they
only shift one bit, which may cause
all the colors to change. You can
use CTRL-R or CTRL-9 (Reverse) to
reverse all the colors (color 1 be-
comes color 4, color 2 becomes
color 3, color 3 becomes color 2,
and color 4 becomes color 1). R
(Rotate) changes all the colors and
is rather useless unless you press it
twice to just turn the characters up-
side down. M (Mirror) works as it
did before except that colors 2 and 3
are switched. And you can still
copy characters using f 7 and f8 (see
above).
Returning To Normal
You can switch instantly back to the
normal character mode by pressing
f6 (SHIFT-f5). If you were drawing
in multicolor, you can see the bit
patterns that make up each color.
Multicolor characters look just as
strange in normal mode as normal
characters look in multicolor.
If you changed colors in the
multicolor mode, some of the colors
in the normal mode may have been
altered. You can change these colors
just as you did in multicolor mode.
Press SHIFT- 1 to change the color of
the empty pixels, and SHIFT-2 to
change the color of the on pixels.
Use SHIFT-4 to change the color of
the eight rows of characters.
How To Use The
DATA Statements
The DATA statements are created
from lines 63000 and up, as many
as necessary. Each line of data has
nine numbers. The first number is
the internal code of the character
(the code you use when POKEing
to the screen). It represents an offset
into the table of character patterns.
The eight bytes that follow are the
decimal numbers for the eight bytes
needed to define any character.
Here's a sample program to read
them and display them:
10 POKE 56,48: CLR
50 READ A: IF A= -1 THEN 70
60 FOR 1 = 0 TO 7: READ B
63 POKE 12288 -(- A * 8 + I, B
66 NEXT: GOTO 50
70 PRINT CHR$(147);"{10 DOWN}":
REM TEN CURSOR DOWNS
80 FOR I - 0 TO 7: FOR J = 0 TO 31
83 POKE 1028 + J -(- I • 40, I * 32 + J
86 POKE 55300 + J -I- I • 40, 1: NEXT:
Best of COMPUTtI and Gazette 81
NEXT
90 POKE 53272, (PEEK (53272) AND 240)
OR 12
95 END
You'll also need to add the fol-
lowing line to the end of your
DATA statements:
63999 DATA -1
If you want to have your cake
and eat it, too — that is, also have the
normal ROM patterns — copy them
from ROM down to RAM by adding:
20 POKE 56334, PEEK (56334) AND 254:
POKE 1, PEEK (1) AND 251
30 FOR I = 0 TO 2047: POKE 12288 + I,
PEEK (53248 + I): NEXT
40 POKE 1, PEEK (1) OR 4: POKE 56334,
PEEK (56334) OR 1
To turn on multicolor mode,
POKE 53270, PEEK(53270) OR 16.
Three color registers are at
53281-53283. The fourth is the in-
dividual character color, which is
changed by holding down CTRL or
Commodore and pressing a num-
bered color key on the top row of
the keyboard.
Custom Characters On
The 128
Commodore 128 Users can use Ul-
trafont+ to create characters for the
128's 40-column screen.
First, go into 64 mode and load
Ultrafont + . You'll be using the
characters in 128 mode, but you
have to create them in 64 mode.
When you're satisfied with the new
character set, save it to disk, follow-
ing the instructions above. (It's eas-
ier to use a disk file on the 128, so
don't use the DATA option.) To
load the character set into the 128,
add these lines at the beginning of
your own program:
10 GRAPHICl: GRAPHICO
20 BLOAD "characterset", BO, P14336
30 POKE 2604,30: POKE 217,4
That's all there is to it. Line 10
allocates memory for a hi-res screen
by moving up the start of BASIC.
This is necessary to protect the
character set from interference from
your program. Note that while the
custom characters are in this mem-
ory, you should not use the hi-res
screen. Also, if you use the SPRDEF
command to create sprites, the hi-
res area is cleared and your charac-
ter set will be erased. After exiting
the sprite editor, press RUN-
/STOP- RESTORE and BLOAD
the characters again.
Line 20 loads the character set
you created into locations 14336-
16383. Substitute the appropriate
filename for "characterset" in this
line. Line 30 then sets a pointer to
14336. To move it to another loca-
tion in memory, the character set
must start at an even multiple of
2048; divide. the starting address by
1024 and add 16 (this is the number
to POKE into 2604). The POKE to
217 tells the 128 to look for the
character in RAM instead of ROM.
For multicolor characters, a
couple of additional POKEs are
needed:
40 POKE 218,255: BANK 15: POKE
53270,PEEK(53270)OR1 6
The POKE to 218 turns off the
split-screen option, which is ac-
cessed by the BASIC commands
GRAPHIC2 and GRAPHIC4. Split
screens use a raster interrupt to
switch back and forth; this interrupt
interferes with multicolor mode.
Once the interrupt is disabled, it's
safe to go into multicolor mode
with the POKE to 53270. To change
the colors in multicolor mode, use
the COLOR command. ®
1541/1571 Drive Alignment
1541/1571 Drive Allgnmvnl reports the alrgnment condition of
the disk drive as you pertorm adjustments. On screen help is
available while the program is running. Includes features for speed
adjustment and stop adjustment. Complete instruction manual on
aligning both 1541 and 1571 drives. Even includes instructions on
how to load alignment program when nothing else will toad! Works
on the C64. SX64, C128 in 64 or 128 mode. 1541. 1571 in either 1541
or 1571 mode! Autoboots to all modes Second disk drive fully
supported. Program disk, calibration disk and instruction manual
only $34.95!
Super DIek umUet
Super Disk UIIIIIlM is the ultimate utilities disk tor the 1571 disk
drive and C128 computer An 80 column monitor is required. SOU
will copy whole disks (with 1 or 2 drives), perform many CP/M and
MS-DOS utility functions, edit any track or sector, trace files, copy
files, rename a disk, rename a file, change disk format (without
affecting data), scratch or unscratch files, lock or unlock files,
erase a track or a whole disk, create auto- boot,
assemble/disassemble drive RAM or ROM, analyze disk format.
format in MFM, CPM+. 1541, or 1571 format, reads CPM+
directories, contains a 1571 drive monitor, fully supports a second
1571 drive, performs direct DOS commands and much, much
more! Options window displays all choices available at any given
time. Many utilities also work on the 1541 drive. No need for
numerous utility disksl SDU does It all! Only $39.95!
Fre« shipping A hindllngi No surcharge for credit card orders!
Immediate shipping! Illinois residents add 8% sales tax. Order
from:
Free Spirit Software, lr>c.
538 S. Edgewood
La Grange. IL 60525
(312)352-7323
--^-■^ NEW!
UPDATED
_ VERSION!
5^ Fftt:st:NiiNG
A St:W CHAPnil'AJtT
DISCOVER Y FOH THE
0128 COUPUThUl
NOW! tVEN MORE KEATURtS & OFflONS:
MULTICOLOR MOUL kis you draw in 2 Colors ui onct-uvoii
3-DI SCREtiN-SWAi'l'lNG. KoalafaJ. Doodle &. 30-COLUMN
CONVERSIONS! DUPLiCATt & Transfer both large &, Small
areas of Scre<;nsl bONUS EXTRA: 40-80 CONVERTER
STRETCHES your 40'.:olumii Drawings into HO Columnsl
NUW MOiii;.'i- ^ociM. Ml ^*K(JHfc.^il2ilt^iiIa__£iI2_L^laXJA2Ii
TRUE 3-D DRAWINC. (noi wireframe), &. 2-D Drawing, boih in
virtually any size. EVEN DRAW IN TRANSPARENT 3-D!
Create COMHEEX 3-D Screens & SAVE them on DISK or dump
a Hard-copy to PRINTER! i-RINT TEXT anywhere on Screen
(Normal &. Reversed). Mak.: CIRCLES. SPHERES, POLYGONS,
BOXES, etc. Fill wiih COLORS or PATTERNS! A Versatile
SCREEN WIPE Utility - AND AN AMAZING LINE DRAWING
FEATURE that creates KAYS & SPOKES ON THE FLY! ADD
SPRITE ANIMATION tor LIVING DRAWINGS!
IN RESPONSE TO MAN Y REQUESTS WE ARE MAKING
A ONE-TIME INCREDIBLE REDUCTION IN ALL PRICES!
only $39.95 U.S. (CA Res. Add 6%)
CAPFCO - P.O. Box 7652
Chula Vista. CA 92012-7652 • Tel: (619)477-5970
wfa: o I aiK 1 uiJ-ib: BAa 1 c:: m . . - - a :^s* . ^5
H^V> SHKIlLSIiai' lX'.i|-... ( li.,..b^.K.jiJicbl-Kni.S. I'KINT Ilic-iii. uic
BUILT-IN lll-Hl S SCKI INS Iv- ^llOM llic.n ull^ Onij- %\<i9S
Jt.i 1 1.K.III ilMLJL.AIiiK mKoI Iliu-i An-Ji; Jiiiun.. . Only .... i2-i.')5
IMPKOVI l»(-i;h LI 11 Lin IHSK Iwn mui. o[iBiiiil|[jmei, ulilv.«li: JM.VS
80 Columns
For The 64
Did you ever wish for an 80-column
screen? "Screen-80" transforms your
64 into an SO-column machine with-
out affecting the normal screen edit-
ing keys. We've also included
"Custom-80," which allows you to
create your own 80-column character
set with a joystick.
"Screen-80" offers a full 80-column
screen and provides you the ability
to use your 64 to write, edit, and
even run BASIC programs (includ-
ing some commercial software).
You can also use all the cursor con-
trols of the normal screen editor. It
runs concurrently with the normal
system, allowing a quick switch be-
tween 40- and 80-column modes.
Best of all, little memory is
used by Screen-80. The program
consists of approximately 3K of ma-
chine language which goes into
RAM "underneath" ROM. There
are also 43 bytes which are placed
in a little used area of RAM (loca-
tions 710-753). Since the bulk of
Screen-80 uses the same memory
locations as the operating system,
and the location of the 43 bytes
used from RAM are normally un-
used anyway, Screen-80 works
without any apparent loss of pro-
gramming space.
Using 80 Columns
Once you enter 80-column mode,
the first thing you're likely to notice
is the smaller size characters. Since
increasing the size of the screen is
impossible, adding 40 more col-
umns to the 64 makes it necessary
to halve the size of each character.
Some televisions may not produce
a clear enough picture to make
these smaller characters readable,
so you may find it difficult to read
text in 80 columns. We recommend
Gregg Peele And Kevin Mortin
using a video monitor with the
color turned off. You may want to
change the character set to suit your
personal taste or needs. "Custom-
80" (discussed later) is designed to
let you do just that.
Screen-80 provides a different
cursor than does the normal 40-
column mode. Rather than a blink-
ing block, it uses an underline
character; but like the normal cur-
sor, it can move anywhere on the
screen. In fact, you can use all the
cursor control keys, just as you
would normally, to insert or delete,
home the cursor, clear the screen,
or create BASIC program lines.
Both uppercase/graphics and
lower/uppercase modes are sup-
ported in Screen-80, but you cannot
toggle between these modes with
the SHIFT-Commodore key combi-
nation. Instead, you can put the
screen editor in lower-/uppercase
mode by pressing the CTRL and N
keys simultaneously, or by printing
CHR$(14). To return to uppercase/
graphics mode, simply print
CHR$(142) to the screen. These
methods affect only characters
printed after these commands.
Thus, you may have both sets (for
example, graphics and lowercase)
on the screen at the same time for
increased programming flexibility.
You can change the color of the
background, text, or border by sim-
ply POKEing the appropriate color
number into location 53281 (for the
background), location 646 (for text),
or location 53280 (for the border).
Changing text color changes the
color of all text on the screen. If you
want to change the background or
text color during program mode,
print a CHR$(13) after POKEing
the appropriate location. Since
color memory is fixed on the 64, it's
impossible to have true 80-column
color. Therefore, Screen-80 does
not recognize color codes in PRINT
statements as being any different
from other graphics characters. All
printing to the screen uses the color
specified in location 646.
Graphics And
Sound Routines
Screen-80 can be used with sprites,
high-resolution graphics, and
sound — just like the normal 64
screen. Since this program actually
uses a hi-res screen, you can also
use it for other graphics displays.
You can even have text and hi-res
graphics on the screen at the same
time. (Check your Programmer's
Reference Guide for more detailed
information on how to plot points
on the hi-res screen.)
To plot points (or do anything
else) to the hi-res screen, it is im-
portant to know how to POKE and
PEEK to the screen. The hi-res
screen for Screen-80 is located at
57344 ($E000). Since this screen
memory shares addresses with
ROM, you may POKE graphics
safely to the screen, but attempting
to PEEK from the screen will give
you values from the ROMs. To
PEEK these screen locations, you
must first disable interrupts, then
use location 1 to reconfigure the 64.
Location 1 allows you to selectively
replace ROM locations with
RAM — making it possible to have a
full 64K of RAM on the 64. Once
you reconfigure the 64, you can
PEEK locations on the screen. Since
the operating system must access
the ROMs to function properly, you
must immediately restore the 64 to
its normal configuration and re-
enable interrupts. Here's an ex-
ample of how to do it in BASIC:
Best of COMPUTE! and Gazette 83
10 POKE 56334,PEEK(56334)AND254;
REM DISABLE INTERRUPTS
20 POKE 1,53: REM RECONFIGURE 64
30 PRINT PEEK(57344): REM PEEK THE
FIRST BYTE OF SCREEN RAM
40 POKE 1,55: REM RETURN 64 TO
NORMAL
50 POKE 56334, PEEK(56334)ORl: REM
REENABLE INTERRUPTS
Using sprites in Screen-80 re-
quires all sprite data to be kept
within the same 16K block as the
hi-res screen. Locations 49352
($C000) to 53247 ($CFFF) are per-
fect places to put sprite data. The
sprite pointers for Screen-80 are lo-
cated at 53248 + 2040 to 53248 +
2047. To cause sprite 0 to get its
data from 49152 (SCOOO), put a zero
into location 53248 + 2040. Since
POKEs to this area of memory are
normally intercepted by the I/O
chip, we must disable interrupts
and I/O to put a value into these
locations. Here's a program to put a
sprite onto the screen:
10 V = 53248
20 POKE V,100:POKE V + 1,100
30 POKE V-l-39,2
40 POKE 56334,PEEK(56334)AND254
50 POKE 1,PEEK(1)AND251
60 POKE 53248 + 2040,0
70 POKE l,PEEK(l)OR4
80 POKE 56334,PEEK(56334)ORl
90 POKE V + 2U
Creating sound from within
Screen-80 is done exactly the same
way as from the normal screen. In
fact, since you want to POKE the
information to the SID chip (in the
I/O area), you don't have to disable
interrupts or do any bank switch-
ing, as was necessary for hi-res
graphics or sprites. The normal
POKEs will do.
Using Other Programs
With Screen-80
This program is designed to inter-
cept any calls to the normal Kemal
PRINT routine ($FFD2). Software
which bypasses this routine or
POKEs directly to the screen will
not work correctly with Screen-80.
An example of a program which
bypasses the PRINT vector is the
DOS wedge program (on the TEST/
DEMO disk which comes with
1541 disk drives). Fortunately, this
problem can easily be fixed by
changing all PRINTs to pass
through the standard vector. This
program, when used in place of the
normal DOS boot program ("C-64
Wedge"), changes these references.
10 IF A = 0 THEN A = l:LOAD"DOS
5.1 ",8,1
20 FOR 1 = 1 TO 7:READ A:POKE A,210:
POKE A-I-1,255:NEXT
30 DATA 52644,52650,52712,52726,
52752,52765,53075
40 SYS 52224
With these changes, the DOS sup-
port program will work with
Screen-80.
One of the best applications of
Screen-80 is with terminal soft-
ware. We tested Screen-80 with the
terminal software that comes with
the VICmodem and the 1650 Auto-
modem by Commodore. Since both
programs use the standard PRINT
vector, they work fine. Programs
which depend on sprites should be
avoided, as should programs which
move screen memory or otherwise
change the normal configuration of
the 64.
SpeedScript does not use the
PRINT vector at $FFD2 to update
the screen, which makes it incom-
patible with Screen-80.
How To Use Screen-80
To use Screen-80, LOAD the
program from disk using the nor-
mal format for LOADing BASIC
programs;
LOAD "filenaine",8
Notice that we LOADed our pro-
gram without the ,1 that generally
accompanies ML programs. If the
program loaded correctly, you can
LIST it. You should see one line
with a SYS command. Simply RUN
the program and you'll have
Screen-80. Pressing RUN/STOP-
RESTORE will put you into 40-
column mode, and typing SYS710
and pressing RETURN will bring
back 80 columns. You can make a
backup copy by simply saving it as
you would a BASIC program;
SAVE "filenaine",8
At this point, type NEW to begin
programming in SOcolumns.
Custom-80: Creating Your
Own Character Set
"Custom-80" allows you to create
your own character set for use with
Screen-80. It's easy to use and re-
quires a joystick.
Custom-80 "borrows" the
character set from Screen-80 and
then moves it to a safe location in
memory for editing. After editing,
you can return the custom charac-
ters to the Screen-80 program, or
save your new character set to disk
or tape. To load Custom-80, type;
LOAD"CUSTOM-80",8,1
After loading it into memory,
type NEW to reset the BASIC point-
ers. Next, LOAD Screen-80 into
memory and SYS 49152. This puts
you in Custom-80 and, at the same
time, accesses the character set in-
cluded with Screen-80.
The Screen-80 character set is
displayed in the lower half of the
screen, while the current character
being edited is framed by a yellow
cursor. In the upper-left comer of
the screen the character is enlarged
for editing, and brief instructions
are provided to the right.
Customizing Characters
You can choose which character
you want to edit by moving the
cursor around the screen using the
joystick or the cursor keys. The
flashing blue square indicates the
current pixel in the character you
are editing. To set the pixel, press
the fire button on the joystick. To
reset the pixel, press the fire button
again.
Press SHIFT and CLR/HOME
to clear all the pixels in the charac-
ter you're editing. (This will not
affect the characters previously
edited.) To home the cursor to the
first character, press CLR/HOME
without pressing SHIFT. To copy a
character from one position to an-
other, press fl to store the current
character into the buffer. Then
move the cursor to the new position
of the character and press f7 to
retrieve it from the buffer.
Pressing S saves the character
set to tape or disk as a short pro-
gram file. It can then be loaded back
into memory with the L command.
When loading or saving, you will
first be asked for the name of the
file, then asked to press T for tape
or D for Disk. If an error occurs
during a disk operation, the pro-
gram will return with the error
message.
If you wish to make the new
character set a permanent part of
Screen-80, press X. This puts the
redefined character set back into
Screen-80 and exits to BASIC. You
can then save the new version of
Screen-80 to disk with the rede-
fined characters already in the pro-
64 Best of COMPUTE! and Gazette
gram by entering:
SAVE"SCREEN-80",8
The next time you run Screen-80,
you'll have your new character set
in the program.
If you wish to use various char-
acter sets with Screen-80, you
should save the character sets to
tape or disk using the method just
discussed and load the individual
character sets by using the program
"Custom Loader" while in Screen-
80. This program LOADs the new
character set into Screen-80 after it
is activated. When the program
prompts you for the name of the
character set you want to load, en-
ter the filename, comma, and the
number of the device you want to
LOAD the character set from. Use 8
for disk, 1 for tape.
One important note: You can-
not SYS to Custom-80 from Screen-
80. You must press RUN/STOP-
RESTORE to leave Screen-80
before typing SYS 49152 to run
Custom-80.
How It Works
First, Custom-80 performs a block
memory move of the character set
data from Screen-80 to 12288
($3000). This is done to make it
easier to display the character set at
the bottom of the screen.
Next, a raster interrupt splits
the screen to show both the rede-
fined character set and the normal
character set. The instructions and
the enlarged character are printed
on the top half of the screen. The
enlarged character is a 4 X 8 matrix
of reverse 5HIFT-Os. Before enter-
ing the main loop, all variables are
initialized.
The main loop has two major
routines. The first routine checks
the joystick and keyboard. If a key
is pressed, the appropriate flag is
set. Pressing X sends the program
to the routine that moves the char-
acter set back into Screen-80. The S
key saves a character set, while the
L key loads a character set.
The second routine prints the
enlarged character on the screen. If
any flags were set, this routine han-
dles them. It takes care of the save-
to-buffer routine, the get-from-
buffer routine, the clear-character
routine, and the routine that han-
dles the flashing of the blue cursor
in the enlarged character. ®
Skyscape
Robert M. Simons
This unique program, written by a
planetarium director, presents the sky
as it can be viewed at any date and
time from the year 1977 onward —
including zodiac constellations and
all the visible planets. It also calcu-
lates planet tables, positions of the
sun, and phases of the moon for any
date and time from 1977 into the
future. "Skyscape" is both education-
al and entertaining.
For thousands of years the sun,
moon, and planets in our solar sys-
tem have excited human imagina-
tion. In ancient times they were
regarded as gods whose distant mo-
tions influenced the course of
earthly events. Though we now un-
derstand more about the true na-
ture of celestial objects, many facts
remain unknown, and a brilliant
nighttime sky still presents an in-
spiring spectacle.
Whether you're seriously in-
terested in the sky or just casually
curious, "Skyscape" is a convenient
tool for extending your knowledge.
It opens a movable window on the
heavens, displaying the position of
our sun, moon, and neighboring
planets from almost any location on
Earth, at any point in time from
1977 into the distant future. Since it
performs all the necessary calcula-
tions, you can enjoy and learn from
this program even if you're not an
expert in astronomy. In addition to
providing data about the position of
celestial objects, it draws a sky map
on the screen, showing each object
as it would appear to you at the
chosen location and time.
Post, Present, Or Future
Skyscape begins by asking you to
answer several questions. Enter the
year, choosing any year from 1977
forward. In some ways this is the
most important input of all, since
objects in our solar system move
significantly from one year to the
next. After you choose the year.
Skyscape allows you to enter the
month and day.
Next you must enter the lati-
tude (north/south position on
Earth) from which you wish to view
the sky. Latitude 0 places you, the
observer, at the equator. Latitudes
1-90 place you in the northern
hemisphere (north of the equator).
To choose a southern latitude (south
of the equator), enter a negative
number from — 1 to —90. Skyscape
generally represents southerly loca-
tions with negative values.
Whenever Skyscape asks for
information, it checks your entry to
make sure it's in the acceptable
range. If you enter an illegal value,
the program displays an error mes-
sage and gives you another chance.
The Sun And Moon
Though very different in size and
composition, the sun and moon are
alike in being the largest celestial
objects visible from Earth. After
you enter the date and latitude,
Best Dt COMPUTE! arKJ Gazette 85
Skyscape displays a table of data
for the sun and moon. In addition
to the date, day of the year, and
latitude north or south, you'll see
the following information:
• Sun's geocentric angle. This
figure represents the sun's position
as a number of degrees relative to
the vernal equinox. The vernal equi-
nox is where the sun is located when
spring begins in the northern hemi-
sphere (the same time that autumn
begins in the southern hemisphere).
• Sun's declination. The num-
ber of degrees north or south of the
equator. Negative values indicate a
southerly location.
• Sun's altitude at noon. The
location of the sun in degrees from
the northern or southern horizon at
noon.
• Sun's right ascension. Just as
longitude and latitude indicate lo-
cations on the Earth, right ascension
and declination are used to pinpoint
locations in the sky. For this pur-
pose the sky is visualized as a gi-
gantic sphere surrounding the
Earth. Declination locates a point
vertically in the celestial sphere and
right ascension locates it horizon-
tally. Right ascension values are
given in hours and minutes in the
range 0:00-23:59. Right ascension
0:00 is exactly at the vernal equi-
nox. Larger right ascension values
lie to the east of smaller ones.
• Right ascension at 9 p.m. The
right ascension which would be on
the meridian at 9 p.m. This coordi-
nate system would be found on star
charts. By comparing this number
with those charts, you can tell what
stars and constellations would be
visible at that time.
• Moon's age. The number of
days since the last new moon.
• Moon's elongation. The loca-
tion of the moon in degrees east or
west of the sun.
• Moon's phase. The phase of
the moon on this particular day.
The Planet Table
After viewing the sun and moon
display, press P to continue to the
next display screen, which contains
the planet table. (Press D if you
wish to enter a new date.) The plan-
et table shows vital information
about the visible planets (through
Uranus, which is at the limit of our
visibility). The table shows the po-
sition of each planet in right ascen-
sion and degrees east or west of the
sun. It also shows the distance of
each planet from Earth in millions
of miles.
If you'd rather see the distance
in kilometers, modify the line 220
program to change the value of
ES = 93 to ES = 149.6.
Some planets have an asterisk
to the left of the right ascension
figure. This signifies that they are
visible at 9 o'clock this evening. For
reference, the planet table also in-
cludes the sun's present right as-
cension and its right ascension at 9
p.m. Press D to input a new date or
S to view a graphics display of the
sky at any time in the current day.
The Visible Skyscape
After selecting the sky display, you
must enter the hour when you wish
to view the sky. The hour value
should be a whole number from
0-23 (enter 22 for 10 p.m., etc.).
You'll also need to enter the min-
utes (0-59). Skyscape then displays
the time and offers you a chance to
enter different values. Press RE-
TURN or Enter when you're satis-
fied with the time.
Skyscape now displays the sky
as it would appear at the chosen
latitude, date, and time. Since the
sky looks very different from differ-
ent places on Earth, the latitude
affects the display considerably. If
your latitude is in the range 24-90
degrees north or south, the sky
shows a dashed line representing
the position of the celestial equator,
along with symbols representing
the sun, moon, and planets visible
at that time. If your latitude is in the
tropical region — from 23^2 degrees
north to 23y2 degrees south — the
dashed line indicates a position di-
rectly overhead.
If you're viewing in the north-
em hemisphere, north is above the
dashed line and south is below it. In
the southern hemisphere these di-
rections are reversed. Below the sky
display is a key that interprets the
symbols used to represent celestial
objects. If more than one object is
positioned at the same spot, the
symbols are displayed above each
other.
At the bottom of the sky you
may see two-letter abbreviations.
These represent zodiac constella-
tions that would be visible from
your chosen vantage point. Sky-
scape uses the abbreviations AR
(Aries), PI (Pisces), AQ (Aquarius),
CP (Capricorn), SA (Sagittarius),
SC (Scorpio), LI (Libra), VI (Virgo),
LE (Leo), CA (Cancer), GE (Gemini)
and TA (Taurus). Each constellation
is located above the spot where its
abbreviation appears. In northern
latitudes, the border of each con-
stellation's zone begins at its abbre-
viation and extends left. In
southern latitudes, the constella-
tion extends right from the position
of its abbreviation.
Daytime skies are shown in
blue and nighttime skies in black.
Skyscape does not calculate the ac-
tual rising or setting time of the sun.
Average rising and setting times of
6 a.m. and 6 p.m. are used in every
case. You may obtain exact rising
and setting times from local news-
papers. However, keep in mind that
there is usually about an hour of
twilight before sunrise and after
sunset.
Halley's Comet
in addition to permanent objects,
Skyscape's graphics display in-
cludes Halley's Comet, visible dur-
ing late 1985 and eariy 1986. If you
choose a date from November 1,
1985 to May 29, 1986, Skyscape
calculates the position of Halley's
Comet and includes it in the graph-
ics display (if it would be visible at
the place and time you select). The
comet's position is based on the best
predictions available at the time of
this writing (summer 1985). These
positions may differ slightly from
the comet's actual position when it
finally makes its appearance.
While Skyscape is generally
accurate, it bases most position cal-
culations on circular orbits. This in-
troduces a certain element of error,
since no object in our solar system
has a perfectly circular orbit. The
position error is most pronounced
for Mercury and Mars (whose orbits
are quite elliptical), but does not
significantly affect other objects.
I've found Skyscape accurate enough
for my own purposes, which in-
clude planning astronomy classes
and planetarium displays. ®
86 Best of COMPUTE! and Gazette
Number
Construction Kit
You've got the tools, materials, and a
goal in this construction project. All
you have to do is think hard and work
fast. For children, an excellent pro-
gram for practicing math skills; for
adults, a real brain teaser.
Your bid has just been accepted for
a new construction project — to
build a three-digit number between
100 and 999. Fortunately you have
your number construction kit,
which includes everything you
need for the task. Your tools are the
four basic arithmetic operators: +,
— , *, and /. Your building materials
are single digit integers, three, four,
or five of them, depending on the
level of play you choose. And, as
with all construction projects, there
is a deadline: one, two, or three
minutes, depending on your level
of expertise.
Getting Started
To play, load the program and type
RUN. First, you're asked for the
number of players. Press 1 or 2.
Then you're asked to choose one of
three difficulty levels: 1. Beginner,
2. Intermediate, or 3. Advanced.
Press the number key which corre-
sponds to your choice. At the begin-
ner level, you're given five numbers
for materials and three minutes to
complete the construction project.
At the intermediate level, there are
four numbers to build with and two
minutes to finish. And, if you're up
to it, the advanced level offers only
one minute and three numbers to
work with.
After selecting the number of
players and a difficulty level, you're
ready to begin. The project total
(your goal) and materials (the num-
Gerald W. Rightmer
bers you're given to work with) are
presented and you're prompted to
press any key to begin. As soon as
the game begins, the timer starts
counting down. First select one of
the numbers from the materials list-
ed. Then choose one of the opera-
tors: the plus or minus sign (on the
top row of the keyboard), the mulh-
plication sign (on the second row
beneath the minus sign), or the di-
vision sign {at the bottom row next
to the right SHIFT key).
Begin building toward your
project goal without hesitation. If
you reach the project goal before
time runs out, press RETURN. Each
game consists of five rounds. In the
two-player game, one round con-
sists of one turn for each player.
After five rounds, the game ends,
and you're asked if you'd like to
play again. At this point, you can
change the number of players and
the difficulty level.
Staying In Bounds
Like any construction project, there
are constraints. First, there are only
15 spaces with which to work. This
means that you can use only eight
numbers and seven operators to
complete the project. You're al-
lowed to move across the computa-
tion line using the cursor keys, and
change numbers or operators sim-
ply by typing over the existing
characters. A running total is dis-
played to the right of the equation,
allowing you to instantly monitor
your progress. Since the target
number is positive and greater than
100, the program does not allow
numbers less than 0 in the target
number. Also, numbers greater
than 9,999 cannot be created during
the construction process. Error
messages will appear, and the game
will pause if the running total is
greater than 999 or less than 0.
Scoring is based on how close
you are to the target, the difficulty
level, and how quickly you re-
spond. If your total at the point
when time expires is greater than
200 from the proposed project total,
then no score is awarded for the
round. A round is terminated either
by the clock or by pressing the RE-
TURN key.
The program randomly gener-
ates numbers for the project goal and
materials, excluding duplicates and
zeros. The only keys that work are
the designated materials (numbers)
keys, the four operators, left and
right cursor keys, DELete, and RE-
TURN. The DELete key deletes only
from the end of the line and removes
only the character under the cursor.
This means that no gaps can be creat-
ed in the middle of a computation
line (this would result in a meaning-
less arithmetic expression).
Number Construction Kit is a
challenge to any age, and it can be
an entertaining way to reinforce
basic arithmetic skills in children.
Since immediate feedback is given
throughout the game, a child can
learn much by trial and error.
For those simply looking to win
the game, a few strategy tips might
be helpful. The first step is to study
the project number and the materi-
als before pressing a key to start
construction. For larger, more diffi-
cult numbers, it's usually easier to
get within range of the project as fast
as possible and to fine tune your
answer with the remaining time and
space. Remember, the materials
may be used as often as necessary —
you have an unlimited supply. ©
Best ot COMPUTE! and Gazette 87
Home Financial
Calcuiator
Patrick Porrish, Programming Supervisor
Many home budget programs have
been published in magazines, but rare-
ly has there been a program integrat-
ing as wide a variety of loan and
investment calculations as "Home
Financial Calculator." It is versatile,
easy to use, and pexible. Rapid recal-
culation features make it an ideal tool
for "what if" projections. A calculator
mode with memory lets you solve
problems not directly supported by the
program, and you can pass values gen-
erated by one calculation to another.
Investment and loan calculations
are readily computerized. In fact,
many programs have been written
which perform these tasks individ-
ually. "Home Financial Calculator"
goes a step further by integrating
several common financial calcula-
tions in a menu-driven package. It
also features a calculator mode or
scratch pad area where program
variables can be manipulated using
common mathematical operations.
When you run the program, a
main menu offers you a choice of
Investment or Loan calculations.
Type I or L to reach the appropriate
submenu.
Common Variables
Before looking at any calculations,
let's consider some basics of the
program. Home Financial Calcula-
tor uses some parameters or vari-
ables repeatedly in the calculations.
These variables are Total (also re-
ferred to as Future Value, Total
Owed, etc., depending on the cal-
culation); Present Value (principal);
Interest Rate; Years; Months; Num-
ber of Periods (of either compound-
ing, deposits, withdrawals, or
payments, depending on the appli-
cation); Deposits; and Withdrawals.
When in the calculator mode (ex-
plained below), you'll reference
these eight variables with the single
letters T, P, I, Y, M, N, D, and W.
As you work with Home Fi-
nancial Calculator, the values of the
eight variables are preserved until
you change them. Whenever the
program asks you for an input (for
example. Interest), the current val-
ue of that variable is displayed
(zero if no value has been entered
yet). If you want to keep the current
value, just press RETURN. Other-
wise, enter the new value and press
RETURN.
With this feature. Home Finan-
cial Calculator makes it easy for you
to generate "what if" projections.
Simply run the same calculation re-
peatedly, each time changing a pre-
viously entered value. Press
RETURN to keep a value, and
change only one or two values to
see the effect on the final result.
You can also store the current
value into the calculator mode's
Memory Register or recall a value
from the Memory Register. To see
how all this works, let's take a look
at some calculations possible with
Home Financial Calculator.
Investment Calculations
Here is the Investment submenu
that appears when you type 1 from
the main menu:
1) Future Value with Periodic
Interest
2) Future Value with Interest
Compounded Continuously
3) Future Value with Regular
Deposits
4) Future Value with Cash Flows
5) Withdrawal of Funds
6) Net Present Value
7) Calculator Mode
8) Return to Main Menu.
Determine which option you
want and press the appropriate key.
Each option displays screen
prompts which ask you to input
several values. These values are
stored in the eight variables men-
tioned above: T for Total (Future
Value), P for Present Value (princi-
pal), / for Interest Rate, Y for Years,
M for Months, N for Number of
Periods, D for Deposits, and W for
Withdrawals. Of course, not all cal-
culations require you to enter all
these values, while others may ask
for additional information.
Most calculations can be
solved for any one of the variables.
To solve for a variable, enter an
uppercase X at the corresponding
input prompt. For example, you
could enter values for everything
88 Best of COMPUTE! and Gazette
except the Interest Rate, typing X at
the Interest Rate prompt. Home
Financial Calculator then solves for
the Interest Rate.
Remember, however, that the
program can solve for only one vari-
able during each calculation. If you
enter an X at more than one
prompt, the program does not have
enough information to calculate an
answer. Keep this in mind, because
the program does not check for po-
tential conflicts.
Future Value With
Periodic Interest
Home Financial Calculator's op-
tions are fairly self-explanatory
when you run the program, but
let's try an example. We'll calculate
the future value of an investment
drawing periodic interest. This kind
of investment could be a savings
account, interest-bearing checking
account, bonds, or a money market
account. Choose this option by en-
tering 1 at the Investment submenu.
After the screen clears, the pro-
gram asks for the first input — Fu-
ture Value, which appears with an
asterisk (*). Below this is a zero (the
current value of this variable in
memory; all variables start out with
a value of zero). Following this is an
input prompt.
The asterisk preceding Future
Value means that this is one of the
variables you can solve for. (A vari-
able not preceded by an asterisk
means that variable cannot be
solved for in that particular calcula-
tion, so X would be an illegal re-
sponse.) If you'd like to calculate
the Future Value, enter an X here,
and answer all the other prompts
with the appropriate values.
Let's calculate the future value
of a $1,000 investment drawing 8
percent interest for two years and
three months, with four com-
pounding periods each year. Enter
an X for Future Value, since we'll be
solving for this total. Answer Pre-
sent Value with 1000 (the principal
you're investing); Annual Int Rate
(%) with 8 (enter the percentage,
not a fraction); For # Of Years with
2; For # Of Months with 3; and # Of
Periods (Compounding) with 4. After
you enter the last value, Home Fi-
nancial Calculator figures the Total
Future Value and displays the an-
swer—$1195.09.
Now suppose you wish to
know the future value of the same
$1,000 investment if you make 9
percent interest. Choose option 1
on the Investment submenu again
and rerun the calculation. Notice
how Home Financial Calculator
automatically prints the current
value of each variable at each
prompt. The Future Value prompt
shows a current value of 1195.09
from the previous calculation. Type
an X at this prompt, 9 for Interest
Rate, and RETURN at all other
prompts to preserve their values.
The result should be $1221.71.
The versatility of Home Finan-
cial Calculator becomes apparent
when you realize how many differ-
ent ways you can run this calcula-
tion. Using this same menu option,
you can calculate the initial invest-
ment (or present value) necessary
to accrue a certain future value with
periodic interest; the interest rate
necessary to accrue a future value
from a present value; or the time (in
years and months) it would take to
accumulate a future amount from
an initial investment with periodic
interest payments. Just enter an X
for the unknown value you're seek-
ing, and fill in all the other prompts.
Future Value With
Interest Compounded
Continuously
Option 2, a variation of option 1,
handles investments paying a con-
tinuous interest rate. Like option 1,
option 2 can handle a number of
calculations — just place an X in the
slot you'd like to solve for.
Here, after entering all other
parameters, you can calculate the
future value of an investment; the
initial investment required to reach
a certain future value; the interest
required to reach a desired future
value; or the time required to reach
a certain future value at a specified
interest rate.
Notice that any variables used
in option 1 will be displayed with
their current values when running
option 2. As mentioned above, the
eight major variables in Home Fi-
nancial Calculator retain their val-
ues throughout the program until
you change them. This feature is
convenient when going from one
option to another on the Invest-
ment or Loan submenus.
In addition, the values are pre
served for use in the calculator
mode. For instance, you could com-
pare the effect of continuously com-
pounded interest to periodic
interest (option 1) without having
to retype the input.
Future Value Wltti
Regular Deposits
If you're interested in setting up an
annuity, you'd choose option 3 on
the Investment submenu. You can
determine the future value of an
account (such as a savings account.
Individual Retirement Account,
college or vacation fund, etc.) with
regular deposits where interest is
compounded with each deposit.
Option 3 can also tell you the
amount of each deposit necessary
to accrue a future value; the interest
rate needed to provide some future
value with regular deposits; or the
time it would take to amass a future
value with regular deposits.
Future Value Witti
Cash Flows
option 4 does a single calcula-
tion— it always solves for Future
Value, so don't enter an X any-
where. It calculates the future value
of an investment with yearly cash
flows (either positive or negative).
The Annual Interest Rate you input
here is the growth rate on the mon-
ey you've invested.
As an example, suppose you
wish to determine the value of a
vacation fund collected over four
years. You're asked for the number
of years, then for the deposit or
withdrawal each year. You deposit
$500 in the fund the first year and
$200 the second. The third year you
are forced to withdraw $300 (en-
tered as — 300), and the fourth year,
you put in $400. The fund has a
growth rate of 12 percent. Its value
after four years will be $1,017.34.
A future value determination
can also tell you whether an invest-
ment is worthwhile. If the future
value of all cash flows is positive or
zero, the investment is profitable. A
negative future value, on the other
hand, represents a losing investment.
Withdrawal Of Funds
If you intend to open an account
from which you can regularly with-
draw funds, choose option 5. With
Best of COfi/PUTEl and Gazette 89
this option, you can determine the
initial deposit required in the ac-
count to cover your withdrawals;
the amount you can withdraw reg-
ularly from this account; the rate of
interest you must make on funds in
the account; or the period of time
over which you can make with-
drawals.
Net Present Value
Option 6 lets you determine the
feasibility of a prospective invest-
ment by calculating its net present
value. Net present value is the cur-
rent value of all future yearly cash
flows to an investment along with
any initial cash requirement. The
interest rate you input here is the
rate of return you require on your
investment. A positive net present
value indicates a profitable invest-
ment, while a negative result signi-
fies a losing investment.
As an example, suppose you
have the opportunity to make a
$2,000 investment which would re-
turn $1,500 the first year, cost you
$750 the second year, and return
$1,900 the third year. You hope to
make 13 percent on your money.
With option 6, you determine a net
present value of $56.87, represent-
ing a profitable investment.
Ttie Calculator Mode
option 7 puts you in the calculator
mode (also available from the Loan
submenu). Calculator mode works
very much like a handheld calcula-
tor with a single memory. You can
type in a value or recall one from a
variable by entering its symbol —
T(otal), P(resent Value), I(nterest
Rate), Y(ears), M(onths), N(umber
of Periods), D(eposits), and W(ith-
drawals). You can perform simple
math on values stored in the Mem-
ory Register using reverse Polish
notation. And you can use the re-
sults in future calculations.
When you enter calculator
mode, the calculator command line
appears on the screen:
V S H R M-l- M- M* M/ MR MC
MEM = 0
Here are the commands:
V (View the values of the eight
primary variables)
S (Store Memory Register into a
variable)
H (Help — prints the command line)
R (Return to main menu, exit cal-
culator mode)
M+ (Add the last input to the
Memory Register)
M— (Subtract the last input from the
value in the Memory Register,
and store the result in the
Register)
M* (Multiply the last input times the
value in the Memory Register,
and store the result in the
Register)
M/ (Divide the last input into the
value in the Memory Register,
and store the result in the
Register)
MR (Memory Recall)
MC (Memory Clear to zero)
MEM" (Memory Register's current
value)
If you've run through a sample
investment calculation, you now
have some variables in memory.
Enter V in the calculator mode to
see them. The screen displays the
eight values currently in memory
for the eight variables.
To work with one of these vari-
ables, enter one of their letters (T, P,
I, Y, M, N, D, or W) and press
RETURN. Then type M-l- to add it
to the Memory Register (all vari-
ables must be stored in the Register
before you can perform any opera-
tions on them). Suppose you put
the current value for T into the Reg-
ister and now wish to add $229 to
this value. Enter 229, press RE-
TURN, then type M+ and press
RETURN. The addition is per-
formed and the result displayed. To
store this value back into the T vari-
able, enter S for Store. A prompt
appears, requesting the variable in
which you intend to store the value.
Type T to store the value into the
variable T.
You can also use the Memory
Register to hold a value not repre-
sented by any of the eight variables.
To do this, determine a value using
the calculator mode and store it into
the Memory Register with M + .
Then, when you're running a calcu-
lation elsewhere in the program,
you can substitute this value for
any of the eight primary variables
by typing MR (Memory Recall) at
the appropriate prompt. MR can be
used both in the calculator mode
and at any prompt where the previ-
ous value is displayed.
Finally, option 8 on the Invest-
ment submenu returns you to the
main menu. Once there, you can
perform some loan calculations by
typing L.
Loan Calculations
Here is the Loan calculations
submenu:
1) Regular Loan Payments
2) Remaining Loan Liability
3) Final Loan Payment
4) Single Payment Loan
5) Loan Amortization Schedule
6) Calculator Mode
7) Return to Main Menu
Regular Loan Payments
Option 1 handles a number of cal-
culations for equal payment loans.
You can figure the principal of a
loan; the amount of each regular
payment necessary to repay a loan;
the annual interest rate on a loan
with regular payments; or the term
of the loan.
Remaining Loan Liability
With option 2, you can determine
the remaining balance on a loan
with regular payments after a num-
ber of payments have been made.
Enter the principal on the loan, the
amount of each payment, the annu-
al interest rate, the number of pay-
ments yearly, and the last payment
number.
Final Loan Payment
option 3 calculates the amount of
the final payment on a loan. In
many cases, the last payment of a
loan will vary from the amount of
the regular payment. This option
handles situations where the final
payment is greater than ("balloon
payments") or less than the regular
payment.
Single Payment Loan
Option 4 calculates the amount
owed on a loan that is paid off with
a single payment. You must input
the principal on the loan, its annual
interest rate, its term in years and
months, and the number of times a
year the interest on the principal is
compounded.
Loan Amortization
Schedule
Option 5 displays a loan amortiza-
tion schedule. Enter the principal
on the loan, the amount of each
payment, the annual interest rate,
the term of the loan, and the num-
ber of payments yearly. Then enter
the period of the year in which the
loan began (for instance, 10 for Oc-
tober) and the range in years of the
90 Best of COMPUTE! and Gazette
amortization schedule you'd like to
examine.
Because of the complexity of
these calculations, there may be a
delay before the output appears on
the screen, especially if you have
chosen to look at the latter years in
a long-term loan repayment sched-
ule (such as a home mortgage).
When the amortization table ap-
pears, it displays the payment num-
ber, the beginning balance for the
period, the amount paid toward the
loan principal, the amount paid in
interest, and the ending balance. To
keep the information from scrolling
off the screen, the program shows
only a few payment periods at a
time. Press RETURN to view anoth-
er screenful. When the end of a year
is reached, the program gives the
total amounts paid on the principal
and in interest for the year. In addi-
tion, when the last period of the
loan is reached, the program dis-
plays the final payment for the loan.
The last two options on the
Loan submenu are the same as
those on the Investment submenu.
Modifying The Program
Home Financial Calculator is writ-
ten in a modular format for easy
modification. For many routines, it
uses common input labels (lines
4710-5080) and some output labels
(lines 5090-5170). If you want to
add an investment or loan calcula-
tion routine, choose the labels from
these lines that fit your application.
Also, you may wish to add a
printer option to the loan amortiza-
tion schedule. Examine lines
3230-3940. Here, variable D5 (de-
fined in line 150) determines the
number of loan payments consid-
ered on each screen. Variables SI,
S2, S3, and S4 (defined in lines
160-190) format the output hori-
zontally on the screen. ®
Budget
Planner
Gregory L. Smith
Managing your budget doesn't have
to be a chore with this program. It
totals your income and bills week by
week, allowing you to plan your ex-
penses in advance and make adjust-
ments for special occasions like
vacations or birthdays.
Have you ever wondered if you can
afford additional monthly ex-
penses— like a mortgage or addi-
tional credit cards? Or how much
"discretionary income" (money left
after paying bills) you might have
around Christmastime? I used to
manage all the details in my head,
but usually had little or no idea as
to how much money there actually
was (or where it all went).
"Budget Planner" is a mini-
spreadsheet written in BASIC. It's
designed specifically to handle
weekly and monthly income/ex-
penses for an entire year. Budget
Planner will sum a column (a week
of income and expenses) and pre-
sent a total. The total is then carried
over into the next week as a previ-
ous balance.
Commodore 128 owners
should modify the program by
changing line 90 as follows.
90 FOR 1 = 1 TO 8: READ A: KEYl,
CHR${A): NEXT: DATA 133,137,134,
138,135,139,136,140
When you first run it. Budget
Planner asks for a filename of the
information to be loaded. Once
you've set up your yearly finances,
you can save the data to disk or
tape. Since you're just getting start-
ed, simply press RETURN and
you'll be prompted for the date.
This is the date you want to start
budgeting. Enter the day as a num-
ber, the month as a three-character
abbreviation, and the year as a
four-digit value. You're not re-
quired to use the beginning of the
year. You may start in the middle or
at the end if you like. The program
is even smart enough to handle
leap years.
The screen then displays four
columns of information. The first
column holds the labels for each
row. The only two rows available
when you first start are the "PREV-
BAL" (previous balance) and
"TOTAL."
The other three columns are
the budget data. The week number
is shown on the left side. The date
of each week is above the corre-
sponding column. When you use
the left/right cursor keys to scroll
around the budget, the week num-
ber will change.
You enter income and ex-
penses by typing the amount
(which appears on line 2 of the
screen) and pressing RETURN.
Only numbers and the " + ", " — ",
and "." keys will work here. Use
the delete key to remove the last
character typed.
The arrow keys are used to
move the reverse-video cursor
around the screen. You cannot alter
the TOTAL row since that is con-
trolled by the computer. You can
see the next week by scrolling off
Best of COMPUTE! and Gazette 91
the edge of the screen. This is al-
lowed in both directions. The up/
down arrow keys work after more
expenses have been added. How-
ever, you cannot scroll vertically as
only 18 rows (one screenful) are
allowed.
The Function Keys
The function keys trigger the vari-
ous options. Pressing fl causes the
help menu to appear. It draws a
window in the top left comer of the
screen with a reminder as to which
key does what.
To go to a specific week, press
f2. You may jump to any week you
like by entering its week number
(week 1 is the start of the budget
and week 52 is the end.) You can
also do a "relative jump" by using a
plus or minus sign ( — 3 means go
back 3 weeks and +3 means go
forward 3 weeks). This is faster
than pressing the right-arrow key
many times. Also, SHIFT-E will
jump to the end of the next month.
This is handy since most of us pay
bills at the end of the month.
F3 is the LOAD key. You may
load a new budget (data from the
disk) at any time. You'll be asked to
supply a filename. If you pressed f3
accidentally, just press RETURN in
response to the filename prompt.
You'll be returned to your original
budget. Likewise, f4 (SHIFT-f3) is
the SAVE key. You might want to
use the year of the budget as the
filename. Again, if you decide not
to save the budget, simply press
RETURN.
To add a new row, use f5 (la-
beled + ROW in the help menu). It
inserts a row below the cursor for
new expenses (or new income).
You'll be prompted for a name,
which can be up to ten characters
long. As with the other options,
pressing RETURN cancels the oper-
ation. Once a name has been as-
signed, you must specify whether it
is a source of income (I) or an ex-
pense (E). Pressing any key other
than "I" defaults to an expense. This
is important; Every value you enter
in this field will be negative if it is an
expense and positive if it is income.
(You don't need to place a minus
sign in front of an expense). Like-
wise, f6 deletes the row the cursor is
on. You must verify by entering YES
(or the letter Y) when asked. If you
enter anything else, you'll be re-
turned to the current budget.
The f7 key causes a new bal-
ance to be computed. Balances are
not recalculated after each new
amount is entered. Since the pro-
gram is written in BASIC, it takes
several seconds to recompute the
array and display the results. This
delay would be annoying if the pro-
gram made all the computations ev-
ery time you added another number.
Pressing f8 makes the results
print out. (Be sure your printer is
turned on.) You may specify a
range of months to print. Pressing
RETURN in response to the FROM?
prompt returns you to the budget,
without printing. Enter a valid 3-
character abbreviation (JAN or
AUG, for example). When prompt-
ed to enter TO?, you may press RE-
TURN to print only one month. To
print several months, use the appro-
priate three-character abbreviation.
Special Keys
There are five SHIFT functions in
addition to the function keys. One
has already been mentioned, the
SHIFT-E key, which jumps to the
end of the next month.
SHIFT-D switches between
showing and not showing the deci-
mals (pennies). Budget Planner de-
faults to showing the decimals.
(The variable DP is initialized in
line 1950. Simply change it to
DP = 0 to change the default.)
When decimals aren't being dis-
played, you see the rounded
amount on-screen.
SHIFT-F finds the next nega-
tive value in the TOTAL row. If you
ever "go negative," the TOTAL val-
ue and the offending value will turn
red. In such a case, you don't have
enough income to cover expenses
and it may be necessary to juggle
some bills. SHIFT-F saves you from
trying to find these trouble spots
manually.
Use SHIFT-M to flag monthly
expenses. If your rent is $500, for
example, you would type in 500 in
that row and then, instead of RE-
TURN, press SHIFT-M. The $500
expense will be added to the end of
every month. Note that this value is
placed only on the same row as the
cursor. Also, only the months
AFTER the cursor position are af-
fected. (For example, if you are on
week 26, only weeks 26-52 are af-
fected. The other 25 weeks will not
be changed.) Naturally, this key
works for income as well.
SHIFT-W is the weekly ex-
pense key (groceries, for example).
Pressing it places the line 2 value in
each week after the cursor position.
Again, you use it in place of RE-
TURN after entering a value. It
works much like the monthly ex-
pense key and also works for the
income fields.
Press SHIPT-T if you use a
Datassette. It directs data storage
and retrieval (f3 and f4) to the tape
drive.
The SHIFT-Q key is the Disk
Select key. It causes data to be
saved to and loaded from a disk
drive. (Note: Disk is the default.
Changing DEV = 8 to DEV=1 in
line 100 will change the default de-
vice to tape.) ©
To receive
additional
information from
advertisers in
this issue, use
the handy reader
service cards in
the back of
the magazine.
92 Best of COMPUTEI and Gazette
Cataloger
This program helps you organize your
disk library by making it easy to find
any program on any disk. Included
are options to print out a master di-
rectory and alphabetically sort all
filenames.
After owning a computer and disk
drive for a while, it doesn't take
long before you find yourself inun-
dated by programs and disks. No
matter how well your disks are or-
ganized, you may still find yourself
loading several directories search-
ing for that one program. Cataloger
offers a practical solution. It's a
straightforward, menu-based pro-
gram that creates a master directory
for all your disk-based programs.
Several extra features make it espe-
cially useful.
Managing Hundreds
Of Files
Cataloger is written entirely in
BASIC and runs on the 128 (either
64 or 128 mode), 64, Plus/4, and
Commodore 16. As listed, Catalog-
er can handle up to 800 filenames.
If you're using a 1 28 in 1 28 mode, it
can handle up to 2000 filenames.
To change the number of filenames
for either of the 128, replace the 800
in lines 10, 370, and 920 with the
2000.)
To use the program, type RUN.
A menu of nine choices is
displayed:
1. CATALOG A SET OF DISKS
2. SEE ALL FILE NAMES
3. PRINT ALL FILE NAMES
4. SORT NAMES ALPHABETI-
CALLY
Kevin Mykytyn
5. CREATE A SEQUENTIAL FILE
6. CREATE A PROGRAM FILE
7. LOAD AN OLD FILE
8. DELETE A DISK
9. START NEW FILE
If you're using the program for
the first time, choose option 1, Cat-
alog A Set Of Disks. You'll then be
asked for a disk name up to 16
characters long. This should be the
name on the label of the disk you
wish to catalog. Put the disk in the
drive and press RETURN. The di-
rectory of the disk is displayed on
the screen and the filenames are
entered into the master directory.
Next, you're asked whether you
want to continue or quit. If you
have more disks to catalog, press
any key. Otherwise, type Q to go
back to the main menu.
After entering all the disks you
wish to catalog, you can view the
master directory. Option 2, See All
File Names, displays the master di-
rectory on the screen. You can also
print it out on any Commodore
printer using option 3. Make sure
the printer is turned on before you
choose this option.
The filenames are stored in a
format slightly different from a
standard disk directory. The file-
name is followed by the number of
blocks used then the disk name.
Once you've viewed the direc-
tory, use option 5, Create A Se-
quential File, to save it. Choose this
option if you wish to make changes
later to the master directory. (The
READ command of "MetaBASIC"
or "BASIC Aid" allows you to view
the master directory in this format.)
Option 6 also saves your mas-
ter directory to disk, but instead of
creating a sequential file, it creates a
program beginning at line 100.
Whenever you wish to view the
master directory, you can load the
program created. (With the FIND
command of "MetaBASIC" or
"BASIC Aid," you can search the
directory for a specific program.)
Adding, Deieting,
And Sorting
At some point you'll want to add or
delete disks from your master direc-
tory. Options 7 and 8 are used for
this purpose. Option 7 is used to
load any directory stored in sequen-
tial file format (with option 5). After
loading a file, you can choose op-
tion 1 and all new filenames will be
appended to the old directory.
Make sure you save your changes
to disk when you're through.
To delete a disk from the mas-
ter directory, choose option 8. In
order for this option to work cor-
rectly, the directory must be unsort-
ed. If you wish to have a sorted
master directory on disk, you
should first save it unsorted.
The delete option removes all
filenames from the disk name spec-
ified. Therefore it's important that
all disks have a unique name. If
you've made changes to a disk and
wish to enter the changes in the
master directory, use option 8 to
delete that disk, then use option 1
to enter the newer disk version.
You'll find it easier to locate a
specific file if the master directory
has been sorted. Once the file has
been saved in sequential file for-
mat, use option 4 to sort the names.
To delete the directory in
memory and start a new directory,
use option 9. 0
Best of COMPUTE! and Gazette 93
Mini-Filer
This flexible file manager for the
Commodore 64 and 128 (in 64 mode)
is fast and easy to use. Single key
commands allow you to create, add,
edit, search, load, save, and print out.
A disk drive
is required.
Databases are powerful tools for
many applications. They can man-
age any information you need to
store and retrieve. "Mini-Filer,"
while not a full-featured database,
allows you to easily create and
manage any number of files by pro-
viding various single-key com-
mands for creating, adding, editing,
searching, and printing out.
Because Mini-Filer is a general-
purpose file manager, it can be used
for many applications. It's not de-
signed to fulfill a specific purpose,
so it's general enough to handle
many different types of files. For
example, you could create a name
and address file (name, street, city,
state, zip code, and phone number),
a file for your garden (plant name,
gestation, watering/feeding needs,
and harvest time), and a file for
your library (title, author, publica-
tion date, publisher, and subject).
Each grouping of information
within a file is a record. For ex-
ample, "John Doe, 123 Main Street,
Anywhere, USA 11111, 888-999-
9999)" could be one record within
an address file. When you enter a
new name, address, and so on,
you're adding another record. In
Mini-Filer, there's no restriction to
the number of records (outside of
the normal limitations of computer
memory and disk space), but exer-
cise common sense when creating a
file. Remember, the longer your
Kevin Martin
file, the longer the search time to
find a record. And if the record size
is fairly small, you'll be able to fit
more records into available memory.
Finally, each record contains
one or more fields. In the examples
above, name, street, and city are
fields within the address file, and
author and publisher are fields in
the library file. The fields can be
alphanumeric, meaning any charac-
ters are allowed, or numeric, con-
taining numbers only.
Think of the structure as a reci-
pe card box. The entire collection of
cards is the file. Each card is a re-
cord inside the file. And each line
on the card is a field.
If you see how all this infor-
mation is organized, you can see
how useful a file manager like
Mini-Filer can be. There are a mul-
titude of applications. Aside from
those noted above, you can create a
file for home inventory, collections
(cards, coins, stamps, record al-
bums, and so on), gifts, recipes,
Christmas cards, and mailing la-
bels, to name a few.
A Few Steps
Using Mini-Filer requires three
basic steps: create a file structure,
enter records, and save these re-
cords to disk for later use. Mini-
Filer also allows you to print out a
single record or an entire file at the
stroke of a single key. A printer is
not required for use with the pro-
gram, however.
To load and run Mini-Filer, type
L0AD"MINI-nLER",8 and RUN.
Creafing A File
After running Mini-Filer, you'll see
a gray screen with a command line
at the top which includes a series of
letters, each of which represents a
command: A (add or enter), C (cre-
ate), F (find), P {print a record), R
(print a file), f7 (load a file from
disk), f8 (save a file to disk), CLR
(clear data from memory), up (cur-
sor up), and down (cursor down).
For a complete list with more de-
tailed explanations, see the Mini-
Filer Commands chart elsewhere in
this article.
To get started, press C to create
a file. You'll nofice that the com-
mand line has changed to read
"CREATE: Enter record format, fl to
exit." (If you have a file already in
memory, this option is not allowed.)
You'll notice the cursor at the top
left comer of the screen, beneath the
command line. Think of the screen
as a blank file card on which you can
write anywhere. Using the cursor
keys, move the cursor to where you
wish to begin. Any location on the
screen is acceptable, but note that
each record is restricted to one
screen of information.
First type a label that describes
the information in the field that will
follow. Detemune the maximum
number of characters you'll need
(up to 128 characters per field). For
example, in creating a name and
address file, you might type
"Name:" and decide that 18 charac-
ters would be enough for even the
longest name you'd enter. Next,
press SHIFT and the space bar to
allocate the number of spaces for the
field length. In our example, you
would hold down the SHIFT key
and press the space bar 18 times.
If you've made any typing er-
rors, use the INSerT/DELete key to
edit. Press RETURN when you've
finished defining the length of a
field. (In our example, press RE-
94 Best o( COMPUTEI and Gazer
TURN after the eighteenth space
has been entered.) The cursor will
then jump to the beginning of the
line below. Next, move the cursor
to where you want to type the name
of the next field label. Repeat the
procedure just described until
you've completed a record.
If you plan to use a numeric
field {like a phone number or zip
code), press the Commodore key
and the space bar rather than a shift-
ed space. (A numeric field appears
as reverse periods; an alphanumeric
field — letters and/or numbers —
appears as reverse spaces.)
The command line at the top of
the screen reminds you to press fl
to exit the format creation mode.
Now you're ready to enter data.
The original command line will re-
appear. Press A (for adding or edit-
ing a record). This puts you in Add
mode. You'll see "ADD Record"
appear in the command line, and
the cursor will immediately go to
the first space in the first field
you've defined.
Now begin entering infor-
mation. After typing in the data for
one field, press RETURN. The cur-
sor will automatically jump to the
first space in the next field. If you
reach the last available space in the
field and type a character, the cur-
sor will jump to the first space in
the next field. The INSerT/DELete
key may be used in case of typing
errors. If you've defined a field as
numeric only (appearing as reverse
periods), it will accept only numeric
characters.
Continue entering information
until all fields in the record have
been entered. Pressing RETURN
when you're at the last character of
the last field will return the cursor
to the first character of the first
field. At this point, you should
proofread the record just entered. If
you've discovered a typing error,
press RETURN until you're at the
beginning of the field that contains
an error and move to the unwanted
character with the cursor-right key.
After making the correction, press
RETURN.
To proceed to the next record,
press i7. You'll see the formatted
fields with the cursor in the first
position of the first field. After com-
pleting the record, you can proceed
to enter another by pressing (7, or
you may exit the Add mode by
pressing fl. The latter choice will
return the original command line.
At this point, you can move
through all records by pressing the
cursor-up key to read the previous
record, or the cursor-down key to
move to the next record. When the
screen shows the format field — the
fields with no entries — you're at
the last position in the file. At this
point, if you wish to enter a new
record, press A and type in new
data. If you wish to edit a record,
press A while the record you wish
to edit is on the screen.
Searching For Data
To search for any information,
press F (for Find). You're then
prompted to enter the characters
you wish to search for. After enter-
ing them, press RETURN. Mini-
Filer will instantly find the
requested information and display
the record which contains it. The
original command line is then re-
turned. To search for any subse-
quent occurrences, press SHIFT -F.
The search will continue from the
next record, and so on.
If the information requested is
not in the file, the command line
will display "Not Found." (When
searching, be sure to enter the word
you're looking for with the exact
spelling, including capital and low-
ercase letters — "Spanish" will not
be found if you enter "Spanish.")
Also, Mini-Filer will find a string of
data within a field. For example, if
you're searching for an area code —
which is a porhon of the phone
number field — you would type the
three-digit code and Mini-Filer will
find it.
Saving And Loading
From the main command line, you
can load or save a file at any time.
To save a file, press f8. You'll be
prompted for a filename. After typ-
ing one in, press RETURN and the
file will be saved to disk as a pro-
gram file with the name you
specified.
To load a file from disk, press
(7. You'll be prompted for a file-
name. After entering one, press RE-
TURN and Mini-Filer will load the
file from disk. After the file has
loaded, the first record in the file
will be displayed. Press any key to
get the main command line.
Should you mistakenly press
i7 or f8 and get a LOAD or SAVE
prompt, press RETURN to get back
to the main command line.
Printing Options
To print the current record, the one
displayed, press P. This prints only
the current record. To print the en-
tire file, press R (for Report). The
printed characters will appear just
as they do on the screen.
Erasing A Fiie
At some point, you may wish to
erase the data in a file from memory
and start over. To do this, press
CLR (SHIFT-CLR/HOME). You're
asked "Are You Sure?" Press Y if
you wish to erase it or N if you'd
rather reconsider. CLR is also use-
ful if you plan to work with more
than one file in a single sitting. You
create the first, save to disk, and
then press CLR. You can now load
(or create) the second file.
Mini-Filer Commands
A
C
F
SHIFT-F
P
R
f7
fS
CLR
up (cursor key)
down (cursor key)
add or edit data
create a database file
find a field (any string of characters)
continue searching for next occurrence (may be used only after F)
print the record displayed
print the file
add a record (in Add mode); load a file from disk (from main
command line)
save a file to disk
clear all file data from memory
move the cursor up (from Create mode) or move to the previous
record (ft-om main command line)
move the cursor down (from Create mode) or move to the next
record {from main command line)
o
Best of COMPUTE! and Gazette 95
MetaBASIC 64
This utility will change the way you
program. It adds 32 new debugging
and testing commands to Commodore
64 BASIC, working by itself or in
conjunction with a machine language
monitor /assembler.
An Introduction To
MetaBASIC 64
"MetaBASIC 64" commands use
English mnemonics, so you don't
have to memorize a lot of SYS num-
bers. And if you forget the new
words, you can either refer back to
this article or type HELP.
BASIC programmers have 12
new commands at their fingertips.
For writing programs, AUTO, KEY,
and UNNEW are available. You can
use CHANGE, DELETE, FIND,
RENUM, and VCHANGE to exam-
ine and alter programs. And
DUMP, SPEED, TRACE, and
TROFF help during debugging ses-
sions. If you're writing in machine
language, you can use some of the
BASIC problem solvers, as well as
MEMORY, MONITOR, NUMBER,
and @. To control MetaBASIC 64,
you have DEFAULT, HELP, INT,
and QUIT. Disk commands include
BSAVE, CAT, DLIST, ERR,
MERGE, READ, RESAVE,
SCRATCH, SEND, and START. Fi-
nally, there's LLIST if you have a
printer, and TERMINAL if you
have a modem.
Special Notes
Always type NEW after loading
MetaBASIC 64. One feature that
Kevin Mykytyn
works automatically is LIST Pause.
When you're listing a program,
hold down CTRL, SHIFT, or the
Commodore key to temporarily
halt it. RUN/STOP-RESTORE is
available in both program mode
and direct mode. But if you want to
interrupt any of the utilities like
RENUM, use the RUN/STOP key
by itself (not RUN/STOP-
RESTORE).
The commands work only in
direct mode; you cannot add them
to programs. Also, you're limited to
one MetaBASIC command per line
(although you can still use multi-
statement lines inside your pro-
grams). Unlike ordinary BASIC
commands, there are no abbrevia-
tions. You must type out the entire
MetaBASIC 64 command. If it
seems to be working incorrectly,
make sure the syntax is correct.
Machine language (ML) pro-
grammers should remember that
MetaBASIC 64 occupies memory
locations $9000-$9FFF. The 4K
which begins at $C000 is available
for programs like Micromon or for
your own ML programs. Be sure to
load and run MetaBASIC 64 before
loading any other programs.
Using MetaBASIC 64
To use MetaBASIC 64, follow these
steps:
1 . Load the program with the com-
mand LOAD"METABASIC
64",8,1.
2. Type NEW
3. Activate the program with SYS
36864 (or SYS 9*4096)
The program uses 4K at the top
of BASIC memory (which leaves
you with 35K for your programs).
The first thing it does is move the
top-of-BASIC pointer down to pro-
tect itself from variables. After the
SYS, it may seem that nothing has
changed. But MetaBASIC 64 is ac-
tive, and you now have 32 new
commands to help you write and
debug programs.
MetaBASIC 64 Commands
Here's an alphabetical list of the new
commands and how to use them, with
examples. In the descriptions of syntax,
MetaBASIC 64 commands and manda-
tory parameters appear in boldface.
String parameters appear in italics. Op-
tional parameters appear in normal
printing.
If something is described as a disk
command, it won't work unless you
have a disk drive. However, some of
the ML programming aids can be useful
in BASIC and vice versa.
@
Use: ML programming (see also
MEMORY)
Syntax: @ starting address, number,
number
This works like POKE, except it allows
you to put a series of numbers into
consecutive memory locations. For ex-
ample, if you want to change border
and background colors to white, you
would use @53280,1,1. The first 1 goes
into 53280, the second into 53281. If
you add more numbers, separated by
commas, they are POKEd into the next
locations: 53282, 53283, and so on.
You can also use this in conjunc-
tion with MEMORY. First, display the
contents of a series of locations using
MEMORY. Then change the infor-
96 Best of COMPUTE! ond Gazette
mation there by putting @ before each
line you want to change. Cursor over to
the numbers you want to change,
change them, and press RETURN.
AUTO
Use: BASIC programming
Syntax; AUTO starting line number,
increment
AUTO can take some of the drudgery
out of writing a program. It automati-
cally numbers a program, starting at the
first number and incrementing by the
second. Separate the numbers with a
comma. If you do not specify a starting
line number or increment, numbering
will start at 5 and increment by 5 for
each additional line. If you specify only
a starting line number, then that value
will also be used for the increment.
After you press RETURN over a line,
the next number is automatically print-
ed. The current line number can be
changed by using the INST/DEL (de-
lete) key and replacing it with another
number.
Press RUN/STOP to escape from
AUTO.
Example: AUTO 100,10 starts at
100 and numbers by 10.
BSAVE
Use: disk command (see also RESAVE)
Syntax: BSAVE "filenam^', starting
address, ending address + 1
BSAVE (Binary SAVE) saves a chunk of
memory to disk, from the starting ad-
dress to the ending address. Put the
program name inside quotation marks
and use commas to separate the name,
starting address, and ending address. It's
important that you add one to the actual
ending address. You can use this com-
mand to make backups of machine lan-
guage programs, as long as you know
the starling and ending addresses.
BSAVE can also function to save sec-
tions of screen memory, custom charac-
ter sets, or high-resolution screens.
The numbers should be in decimal.
If you need to translate from hexadeci-
mal to decimal, see NUMBER (below).
After you BSAVE the contents of
an area of memory to disk, you can load
the data back in with LOAD "fUe-
name",%,\.
Example: BSAVE "ME TAB ASIC
64",36864,40805 makes a backup of Me-
taBASIC 64. To copy the first five lines
of screen memory (locations
1024-1223) to disk, BSAVE
"SCREEN",1024,1224. Screen memory
does not include color information —
that is stored in color memory and
would have to be handled separately.
CAT
Use: disk command (see also DLIST,
READ)
Syntax: CAT
Anytime you want to look at the entire
disk directory, use CAT (for CATalog).
The BASIC program currently in mem-
ory will remain undisturbed. To see
specific portions of the directory, see
DLIST.
CHANGE
Use: BASIC programming (see also
FIND, VCHANGE)
Syntax: CHANGE @old string@new
string@, starting hne, ending line
CHANGE @"old string-
"@"new string"@, starting line, end-
ing line
CHANGE searches through the pro-
gram in memory, changing every oc-
currence of the old string to the new
one. The strings can be up to 30 charac-
ters long, and must be bracketed by the
commercial at sign (@). All lines in
which changes are made are listed to
the screen.
The first format will change BASIC
keywords and variable names. The sec-
ond format should be used to change
strings. If you omit the line numbers,
CHANGE affects the whole program. If
you want to change only one section,
add the starting and ending line num-
bers, marked off by commas.
Example: CHANGE @X@QQ@,
1,200 changes the variable X to QQ in
lines 1-200. To change the name
Charles to John throughout the pro-
gram, CHANGE @"CHARLES"@
'70HN"@.
DEFAULT
Use: MetaBASIC 64 command (see also
INT, QUIT)
Syntax: DEFAULT border color, back-
ground color, text color, device number
When you press RUN/STOP-RE-
STORE, the screen always reverts to the
default colors of light blue characters on
a dark blue screen. And several com-
mands like LOAD and SAVE default to
tape. DEFAULT lets you change these
values to whatever you prefer.
If you have a disk drive, you can
change the device number to 8. If you
have a second drive addressed as de-
vice 9 that you want to use for SAVEs,
change the default to 9. If your 64 is
hooked up to a black-and-white TV,
change the character and background
colors to a more readable combination.
Note: If you change the default
device number to 1 (tape), you will be
unable to use any of the new MetaBA-
SIC disk commands. To disable the DE-
FAULT device number setting and go
back to normal, use the MONITOR
command below. Also, the TERMINAL
command will not operate properly
after DEFAULT has been used to
change the device number. If you use
DEFAULT, be sure to issue a MONI-
TOR command before trying to use the
TERMINAL command.
Example: DEFAULT 1,1,0,8
changes the border and background
colors to white, the character color to
black, and the device number to 8. If
you press RUN/STOP-RESTORE,
you'll see black characters on a white
background. And you'll be able to save
to disk by typing just SPN'E" filename"
(without adding a ,8).
DELETE
Use: BASIC programming
Syntax: DELETE starting line-ending
line
DELETE removes a range of lines from
your program. Separate the starting line
number from the ending number with a
dash (-). Use this command with ex-
treme caution, since it is impossible to
recover deleted program lines.
Example: DELETE 200-250 erases
all lines with line numbers in the range
200-250, including lines 200 and 250.
DLIST
Use: disk command (see also CAT,
READ)
Syntax: DLIST "filename'
This command lists a BASIC program
from disk to the screen, without affect-
ing what's currently in memory. The
program name must be enclosed in
quotation marks. DLIST enables you to
look at a program before using MERGE
or SCRATCH.
It also allows you to read portions
of the directory. DLIST "$0:A"' dis-
plays ail disk files beginning with the
letter A.
Example: DLIST "BASICPRO-
GRAM" reads the file named BASIC-
PROGRAM from disk and lists it to the
screen.
DUMP
Use: BASIC programming
Syntax: DUMP
Use DUMP to examine the current val-
ues of all nonarray variables in a pro-
gram. If the program is running, press
RUN/STOP and type DUMP. To re-
sume, type CONT.
ERR
Use: disk command
Syntax: ERR
ERR reads the disk drive error channel
and displays the DOS error number
and error message from the drive. Use it
when the red light on the disk drive
starts blinking to determine what
caused the problem.
FIND
Use: BASIC programming (see also
CHANGE, VCHANGE)
Syntax: FIND @string@, starting line,
ending line
FIND @"string"@, starting
line, ending line
Best of COMPUTEI and Gazette 97
This allows you to find any word, vari-
able, or other string within a program.
Each line containing the search string is
listed to the screen. If you wish to
search just one section of the program,
add the starting and ending hue num-
bers, separated by commas.
If you're trying to find BASIC
keywords (like PRINT or REM), use the
first format. It also works for variables
and numbers. The second format
should be used when you're looking for
strings or items inside quotation marks.
Example: FIND @A = @ searches
for lines where variable A is defined.
HELP
Use: Meta BASIC 64 command
Syntax: HELP
Whenever you're unsure of the com-
mands available in MetaBASlC 64, type
HELP for a complete list.
INT
Use: MetaBASlC 64 command (see also
DEFAULT, QUIT)
Syntax: INT
Some features of MetaBASlC 64 are
interrupt -driven. If you reset the inter-
rupts (with the MONITOR command),
the function keys and the SPEED func-
tion may no longer work. INT puts the
MetaBASlC interrupts back in place.
KEY
Use; BASIC programming (see also
INT)
Syntax: KEY key number, "command
or string"
This command adds a lot of flexibility
to MetaBASlC 64, allowing you to de-
fine each of the eight function keys as a
different command or string. (Howev-
er, due to a minor bug in MetaBASlC,
any definition you assign to the f8 key
will be garbled whenever you use the
RENUM command.) The command, up
to ten letters in length for each key,
must be inside quotafion marks. There
are two special characters: The back
arrow acts as a carriage return, so you
don't have to press RETURN after
BASIC commands. Also, the apostro-
phe (SHIFT- 7) counts as a double quo-
tation mark.
Using KEY, you can load other ufil-
ities you may own and SYS to them
with a tap of a funcrion key. Or you can
do a one-key RUN or LIST. If you want
to permanently define the function
keys and screen/text colors, you can
use KEY and DEFAULT to set up the
desired configuration, then save a copy
of your customized version of MetaBA-
SIC using BSAVE "METABA-
SIC",36864,40960. The definitions will
be saved along with the program.
If the interrupts are accidentally
reset, you'll have to use the INT com-
mand to reenable the KEY function.
Examples:
KEY 1,"{CLR}LIST100--" clears
the screen and lists from line 100 on
whenever you press fl (the back arrow
means RETURN will happen automati-
cally). You can also abbreviate LIST
with L SHIFT-I.
KEY 7/'DATA" could be useful
with automatic line numbering (see
AUTO) if you're writing a program
with a lot of DATA statements. After
entering a line, press RETURN and
you'll see the next line number. Then
press f 7, and the word DATA automati-
cally appears.
KEY 2,"VERIFY'*'^" defines f2 to
print VERIFY'"" plus a RETURN (note
the apostrophes have been changed to
quotation marks). If you've used DE-
FAULT to change the device number to
8, pressing f2 wall automatically verify
the program most recently saved to disk.
LLIST
Use: printer command
Syntax: LLIST starting line-ending line
This command lists a program, but the
listing is sent to a printer rather than to
the screen. Line numbers are optional.
The syntax for LLIST is identical to the
regular LIST. As written, LLIST does
the equivalent of OPEN 4,4,4 to open a
file for output to the printer. Some
printers may require a different second-
ary address (the last number in the
OPEN statement)— OPEN 4,4,7, for ex-
ample. To change the secondary ad-
dress, POKE the desired value into
location 40341. If you are using a print-
er with a different device number (5, for
example) or a plotter (device 6), you can
change the device number for LLIST by
POKEing the desired value into loca-
tion 40339. To make the changes per-
manent, follow the instructions for
saving a new copy of MetaBASlC given
above in the discussion of the KEY
command.
Example: LLIST 10-20 to list lines
10-20 to the printer.
MEMORY
Use: ML programming (see also @)
Syntax: MEMORY starting address-
ending address
You can examine any section of memo-
ry with this command. Use decimal
numbers (not hex) for the starting and
ending addresses. The values in memo-
ry are displayed, six bytes per line, in
decimal. In addition, the equivalent
ASCII characters are printed in reverse
to the right (if there's no corresponding
ASCII character, a period is printed).
If you omit the ending address,
MEMORY 43 for example, you'll see
the contents of two bytes (43 and 44).
This makes it easier to look at two byte
pointers — like 43 and 44 which point to
the beginning of BASIC memory.
To change memory, you can use
the @ command, described above.
Example: Enter MEMORY
41374-41474 and you'll see the first few
error messages in BASIC ROM (note
that the ASCII value of the last charac-
ter is always added to 128). Or, load a
BASIC program, and type MEMORY
2048-2148 to see how programs are
stored in memory.
MERGE
Use: disk command
Syntax: MERGE "program name"
MERGE reads a program from disk,
lists each line to the screen, and adds
the line to the program in memory, If
the programs have common line num-
bers, the program on disk takes prece-
dence. Say both programs contain a line
250. The line 250 from the disk pro-
gram will replace line 250 in memory.
Before using this command, you
may want to use DLIST to make sure
you're merging the right program. And
if there are conflicting line numbers, you
can use RENUM to renumber one of the
two programs. If you want to merge just
part of one program, use DELETE to
eliminate the unwanted lines.
MONITOR
Use: ML programming (see also INT)
Syntax: MONITOR
If you have a machine language moni-
tor in memory, you can enter it with
MONITOR (providing it is enabled
when a BRK instruction is executed). To
use MetaBASlC 64 with a monitor, you
must load MetaBASlC 64, type NEW,
and activate the program with SYS
36864. Next, load the monitor, type
NEW, and SYS to the starting address
for the monitor (which will set up the
BRK vector to point to the monitor).
MONITOR does several other
things, as well. It changes border, back-
ground, and text colors back to their
default values (light blue on dark blue).
It also resets the default device number
and sets interrupts to normal, which
disables the function-key definitions
(see KEY) and SPEED command. You
can get them back with the INT
command.
NUMBER
Use: ML programming
Syntax: NUMBER $hexadecimal
number
NUMBER decimal number
NUMBER allows you to convert back
and forth between decimal and hexa-
decimal (hex). Put a dollar sign ($) in
front of hex numbers. In addition, the
number is displayed in low-byte/high -
byte format (in decimal) and in binary
(preceded by a percent sign).
98 Best of COMPUTEI and Gazette
Examples: NUMBER $100
256
0 1
% 100000000
NUMBER 34
$22
34 0
%100010
QUIT
Use: MetaBASIC 64 command
Syntax: QUIT
This resets all vectors and disables all
MetaBASIC 64 commands. The one
thing it does not do is restore the top-of-
memory pointer. MetaBASIC 64 is still
protected from BASIC. Reactivate Me-
taBASIC with SYS 36864 or SYS 9'4096.
READ
Use: disk command (see also CAT,
DLIST)
Syntax: READ "sequential filename"
READ allows you to examine sequen-
tial disk files. The information in the file
is displayed to the screen, without alter-
ing whatever program is in memory.
In the rare case that you want to
use the BASIC READ statement in di-
rect mode (to see if all DATA state-
ments have been read, for example),
you can precede it with a colon.
RENUM
Use: BASIC programming
Syntax; RENUM starting line,
increment
This command renumbers the entire
BASIC program in memory (you can't
renumber just part of the program). The
first line of the renumbered program
will be given the specified starting line
number. If you omit the starring line
number, the renumbered program will
begin with line 10. The increment value
specifies how much the starting value
will be incremented for each succeed-
ing line. If no increment value is pro-
vided, the value defaults to 10.
In addition to renumbering BASIC
lines, all references in GOTOs, GO-
SUBs, ON-GOTOs, ON-GOSUBs, IF-
THENs, and so forth are taken care of.
One word of caution; GOTO is covered,
but GO TO (with a space in the middle)
is not. Use FIND before renumbering to
look for occurrences of GO TO.
Example: RENUM 100,20 renum-
bers a program, starting at line 100,
counting up by 20s.
RESAVE
Use: disk command (see also BSAVE)
Syntax; RESAVE "filename"
The save-with-replace disk command
(SAVE "@:filename") first saves the
program and then scratches the older
version, so there must always be
enough free space on the disk for the
new version of the program. This can
cause problems if you don't have
enough available space. The save-with-
replace command is also sometimes un-
reliable and should be avoided.
RESAVE reverses the order — first
it scratches the old version of your pro-
gram from disk, and then does a regular
SAVE, solving both of the above
problems.
SCRATCH
Use; disk command
Syntax: SCRATCH "filename"
SCRATCH does the same thing as
OPEN 15,8,15: PRINT#15,"S0;/iIen-
ame": CLOSE 15, but it's easier to type.
It scratches a file from the disk. If you
have just inserted the disk into the
drive, it's a good idea to initialize it first
(see SEND). You can use wildcards to
scratch more than one program —
SCRATCH "A*" will get rid of all files
beginning with the letter A. However,
you should use such commands with
care to avoid accidentally deleting im-
portant programs.
Example; SCRATCH "SPACE-
GAME" removes the program named
SPACEGAME from the disk.
SEND
Use: disk command
Syntax: SEND "command string'
This is a convenient way to send disk
commands to channel 15. SEND"I0"
initializes the drive, SEND"VO" vali-
dates the disk, SEND "RO:newname=
oldname" renames a disk file, and so on.
For more information about disk com-
mands, see the 1541 user's manual.
SPEED
Use; BASIC programming
Syntax: SPEED number
SPEED changes the rate at which the 64
prints to the screen. The number sup-
plied with the command must be in the
range 0-255. The higher the number,
the slower the printing speed. Try typ-
ing SPEED 255 (the slowest you can
make it) and then list a program. You
can get back to normal with SPEED 0. If
it doesn't work, try using INT (see
above) to correct the interrupts.
SPEED is useful when you're using
the TRACE command.
START
Use: disk command
Syntax: START "filename"
If you forget where a machine language
program begins, put the disk in the
drive and use this command. This can
help when you have forgotten the SYS
that starts a program. If this command
returns the value 2049, the file you are
checking is probably BASIC rather than
machine language (or it at least has a
single line of BASIC, like SpeedScript).
Example; START "METABASIC
64" should display 36864 on the screen.
TERMINAL
Use: modem command
Syntax: TERMINAL
If you own a Commodore modem (and
it's plugged into your 64), TERMINAL
transforms your computer into a 300
baud "dumb" terminal you can use to
talk to standard-ASCII bulletin boards
or information services like Compu-
Serve. You can't change any of the
default parameters, nor can you upload
or download text or programs.
To return to BASIC, press the £
(English pound) key; do not press
RUN/STOP-RESTORE. A note of cau-
tion; Memory locations 52736-53247
($CEOO-$CFFF) are used for buffers, so
any program in this area will be over-
written.
TRACE
Use: BASIC programming (see also
TROFF)
Syntax; TRACE
If you're debugging a BASIC program,
TRACE helps you see what's happen-
ing. As each line is executed, its line
number is printed on the screen. Use
the SHIFT or CTRL keys to temporarily
halt the program. SPEED controls the
speed of execution, and TROFF turns
off TRACE.
TROFF
Use: BASIC programnriing (see also
TRACE)
Syntax: TROFF
This command turns off the TRACE
function.
UNNEW
Use: BASIC programming
Syntax: UNNEW
You may never need this command, but
it's nice to have it available. If you
accidentally type NEW and you want to
retrieve the program, use UNNEW to
get it back.
VCHANGE
Use: BASIC programming (see also
CHANGE, FIND)
Syntax: VCHANGE @old string-
@new string@, starting line, ending
line
VCHANGE @"old string-
"@"new string"@, starting line, end-
ing tine
VCHANGE (Verify CHANGE) works
just like CHANGE (see above), except
you get to choose whether or not each
change is made. Each line containing
the old string is displayed, with each
occurrence of the string marked with a
filled-in circle. If you press Y, the
change is made. Press N if you want to
skip to the next occurrence of the old
string. ©
Best of COMPUTEI and Gazette 99
MetaBASIC Plus
"MetaBASIC Plus" is a companion
program to "MetaBASIC 64." It
adds 11 new commands and modi-
fies HELP to print the new Meta-
BASIC Plus commands in addition
to the original MetaBASIC com-
mands. To create MetaBASIC Plus,
you must have a working copy of
MetaBASIC 64. See the "Meta-
BASIC 64" article on the preceding
pages.
Creating MetaBASIC Plus
MetaBASIC Plus is a collection of
routines to add new commands to
MetaBASIC 64. Like the original
program, the MetaBASIC Plus rou-
tines are written in machine lan-
guage. To install MetaBASIC Plus,
follow these steps carefully:
1. Load MetaBASIC 64 using the
command LOAD "METABASIC
64",8,1.
2. Load MetaBASIC Plus using the
command LOAD "METABASIC
PLUS",8,1.
3. Enter a NEW command to reset
memory pointers.
4. Type SYS 35126 and press RE-
TURN. This calls a short (19-
byte) routine at the beginning of
MetaBASIC Plus which patches
MetaBASIC Plus into the origi-
nal MetaBASIC and activates
the combined programs.
Now you're ready to save a
copy of the new version of Meta-
BASIC, which has the additional
MetaBASIC Plus commands.
Before doing so, however, you
might want to use the KEY com-
mand to set up some default func-
tion-key definitions that will be
enabled whenever you activate the
new MetaBASIC. When you're
ready to save a new copy to disk,
simply use a command of the form
John Brox Shadle
BSAVE "METABASIC -(-",35145,40960
Once you've saved a copy of the
combined file, load and activate the
new version of MetaBASIC just like
you did the old version, with LOAD
"METABASIC + ",8,1 and SYS
36864 (or SYS 9*4096).
MetaBASIC Plus Commands
Here's a rundown on the new
commands.
CURSORFREE
Use: BASIC programming (see also
CURSORPRINT)
Syntax: CURSORFREE
Disables quote mode until the CUR-
SORPRINT command is given or until
RUN/STOP-RESTORE is pressed.
CURSORPRINT
Use: BASIC programming (see also
CURSORFREE)
Syntax: CURSORPRINT
Re-establishes quote mode, reversing the
effect of the CURSORFREE command.
END
Use: BASIC programming
Syntax: END
Prints the last memory location used by
the BASIC program currently in
memory.
FREEMEM
Use: BASIC programming
Syntax: FREEMEM
Prints the number of bytes available
without performing any garbage
collection.
MAKEDATA
Use: BASIC programming
Syntax: MAKEDATA starting ad-
dress, ending address
Converts the contents of the specified
area of memory into DATA statements.
Any BASIC program in memory will be
erased by this statement. MAKEDATA
can convert a maximum of 4352 bytes.
The DATA statements created will be
numbered starting at line zero, and will
include 17 data items per line. After
creating the DATA statements, you can
use the MetaBASIC RENUM command
to renumber the lines, then use the
MERGE command to add the DATA
lines to another program.
POINTER
Use: BASIC programming
Syntax: POINTER address
This is especially useful for checking
BASIC'S pointers. This command does
the equivalent of PRINT PEEK(address)
-|-256'PEEK(address + 1).
RESET
Use: MetaBASIC Plus command
Syntax: RESET
Turns off MetaBASIC Plus. This is the
same as MetaBASIC 64's QUIT except
that all of the memory used by Meta-
BASIC is deallocated. MetaBASIC can
be turned back on (with SYS 36864 or
SYS 9'4096) if no files have been load-
ed and no new strings have been
created.
SCREEN
Use: printer command
Syntax: SCREEN
Performs a screen dump, sending what-
ever is on the screen to the printer. This
works in normal text mode only and
will not dump screens with redefined
characters or high-resolution bit-
mapped screens.
The SCREEN command routine
does the equivalent of OPEN 1,4,255.
Some printers may require a different
secondary address — 7 is common. To
change the secondary address used by
SCREEN, POKE location 35369 with the
desired secondary address value, then
BSAVE a new copy of MetaBASIC using
the command in the instructions above.
If you want to change the device num-
ber used by SCREEN to a value other
than 4, POKE the desired value into
location 35367 and BSAVE a new copy.
SUPERPEEK
Use: ML or BASIC programming
Syntax: SUPERPEEK starting address,
number
Creates a window at the top of the
screen which shows the contents of an
100 Best of COMPUTEI and Gazette
area of memory as decimal values. The
display begins with the starting address
and includes the specified number of
bytes (the number value must be no
larger than 50). If you run a BASIC or
machine language program while the
SUPERPEEK window is active, the
memory contents will continue to be
displayed as the program runs. Thus,
you can see if the program changes the
contents of any of the displayed loca-
tions. Press RUN/STOP to see the
character code equivalents of the num-
bers. The INT command turns off
SUPERPEEK.
TRAP
Use: BASIC programming (see also
UNTRAP)
Syntax: TRAP
Turns on extended error analysis.
When an error occurs during a program
run, the line causing the error is listed,
with the word ERROR in reverse video
at the point where the error occured.
Error trapping doesn't work in direct
mode; it only functions within a pro-
gram. Use UNTRAP to turn off extend-
ed error analysis.
UNTRAP
Use: BASIC programming (see also
TRAP)
Syntax: UNTRAP
Disables extended error analysis to can-
cel the effect to the TRAP command.®
MetaBASIC 128
"MetaBASIC 128," will change the
way you program. It adds 11 new
debugging and testing commands
to BASIC 7.0— and these com-
mands are instantly at your finger-
tips for programming sessions.
Using MetaBASIC 128
MetaBASIC 128 commands use
English mnemonics, so you don't
have to memorize a lot of SYS num-
bers. Once MetaBASIC 128 is ac-
tive, you'll have these 1 1 additional
commands: AID, CHANGE, DE-
FAULT, DLIST, FIND, MERGE,
QUIT, READ, RESAVE, START,
and UNNEW.
The commands work only in
direct mode; you cannot add them
to programs. Also, you're limited to
one MetaBASIC command per line
(although you can still use multi-
statement lines inside your pro-
grams). Unlike ordinary BASIC
commands, there are no abbrevia-
tions. You must type out the entire
MetaBASIC 128 command. If you
wish to stop the execution of a com-
mand, press the RUN/STOP key
{not RUN/STOP-RESTORE). If it
seems to be working incorrectly,
make sure the syntax is correct.
Machine language program-
mers should remember that Meta-
BASIC 128 occupies memory
locations $1300-$18BF (4864-
Kevin Mykytyn
6335) and uses zero-page locations
$FB-$FE (251-254) and $AC-$AF
(172-175).
To use MetaBASIC 128, follow
these steps:
1. Load the program with the com-
mand BLOAD "METABASIC
128".
2. Type SYS 4864 to activate Meta-
BASIC 128.
After the SYS, it may seem that
nothing has changed. But MetaBA-
SIC 128 is active, and you now have
11 new commands to help you
write and debug programs.
MetaBASIC 126 Commands
Here's an alphabeHcal list of the new
commands and how to use them, with
examples. MetaBASIC 128 commands
and mandatory parameters appear in
boldface. String parameters appear in
italics. Optional parameters appear in
normal print.
If something is described as a disk
command, it won't work unless you
have a disk drive. However, some of
the ML programming aids can be useful
in BASIC, and vice versa.
AID
Syntax: AID
Lists all available MetaBASIC 128
commands.
CHANGE
Syntax: CHANGE @old string@new
string@, starting line, ending
line
CHANGE @old string@new
string@, starting line
CHANGE @old string@new
strin^@„ending line
CHANGE /old string/new
string/, starting line, ending
line
CHANGE /old string/new
string/, starting line
CHANGE /old string/new
string/,, ending line
See also FIND.
CHANGE searches through the pro-
gram in memory, changing every oc-
currence of the old string to the new
one. The strings can be up to 30 charac-
ters long and must be bracketed by the
commercial at sign (@) or the slash (/).
All lines in which changes are made are
listed to the screen. The format with @
is the tokenized form and should be
used to change BASIC commands and
variable names. The ASCII form (the
slash format) is useful when you want
to change a word in a string without
changing keywords. For example:
CHANGE /PRINT/WRITE/
changes all occurrences of the word
PRINT within quotarion marks without
changing any PRINT statements.
Use the slash format to change
anything inside quotation marks or
after a REM statement; use the at sign
format to change anything not inside
quotation marks or after a REM state-
ment. Remember that mathematical
Best of COMPUTE! and Gazette 101
operators within programs such as +,
~, ', /, >, <, and = are stored as
tokens, not characters, so you must use
the @ format when searching for one of
these.
If you omit the line numbers,
CHANGE affects the whole program. If
you want to change only one section,
add the starting and ending line num-
bers, marked off by commas.
Example: CHANGE @X@QQ@
„200 changes the variable X to QQ in all
lines up to and including 200. To
change the name Charles to John
throughout the program, CHANGE
/CHARLES/JOHN/.
DEFAULT
Syntax: DEFAULT border color, back-
ground color, text color
See also QUIT.
When you press RUN/STOP-RE-
STORE, the screen reverts to the default
colors light green and black. DEFAULT
lets you change these values to what-
ever you prefer. If your 128 is hooked
up to a black-and-white TV, change the
character and background colors to a
more readable combination. The bor-
der- and background-color changes af-
fect only the 40-column screen; the
text-color change affects both the 40-
and 80-column displays.
Introducing
BUDGET MASTER"
The Home Budget System
For the Commodore 64 (disk required)
If you want lo get serious at>out keeping a
home budget and your Income is less than
$1,000,000 per year, then BUDGET MASTER
is the tool you need. BUDGET MASTER Is
designed to help you define your budget
goals and then enter your actual data in only
a few minutes each session. BUDGET MAS-
TER is 100% machine language tor max-
imum speed and accuracy.
FEATURES
■^ Up to 80 categories
^ 10 accounts + 10 credit cards
"' Integrated business expenses
^ Enter data in foreign currency.
^ 2400-3600 record transaction file
^ Can search tor up to 8 different seta of
parameters at the same time
>^ Comprehensive analysis of your budget
and actual data
•^ Fult use of function keys
All this at a price that won't
'break your budget "
ONLY $24.95
+ $2.00 Shipping and IHandling
Minnesota resldenls add 6% sales tax
To order send check or money order to:
EYCHANER SOFTWARE CO.
P.O. Box 388
Grand Rapids, MN 55744-0388
Commodore 64 is a trademark ol Commodore Business
Machfies Inc
BUDGET MASTER is a irademark ol Eychaner Software Co.
To disable DEFAULT (and go back
to normal colors), use the QUIT
command.
Example: DEFAULT 1,1/0 changes
border and background to white, and
characters to black. If you press RUN/
STOP-RESTORE, you'll see black char-
acters on a white background.
DLIST
Syntax: DLIST "filename"
See also READ.
This command lists a BASIC program
from disk to the screen without affect-
ing what's currently in memory. The
program name must be enclosed in
quotation marks. DLIST enables you to
look at a program before using MERGE
or SCRATCH.
Example: DLIST "BASICPRO-
GRAM" reads the program file named
BASICPROGRAM from disk and lists it
to the screen.
FIND
Syntax: FIND @string@, starting line,
ending line
FIND @string@, starting line
FIND @stritig@„ ending line
FIND /string/, starting line,
ending line
FIND /string/, starting line
FIND /string/,, ending line
See also CHANCE.
This allows you to find any word, vari-
able, or other string within a program.
Each line containing the search string is
listed to the screen. If you wish to
search just one section of the program,
add the starting and ending line num-
bers, separated by commas.
If you're trying to find BASIC
keywords (like PRINT or REM), use the
first format with the @ symbols. It also
works for variables and numbers. The
second format should be used when
you're looking for strings or items in-
side quotation marks.
Example: FIND @A = @ searches
for lines where variable A is defined.
MERGE
Syntax: MERGE "program name"
MERGE reads a program from disk,
lists each line to the screen, and adds
the line to the program in memory. If
the programs have common line num-
bers, the program on disk takes prece-
dence. Say both programs contain a line
250. The line 250 from the disk pro-
gram will replace line 250 in memory.
Before using this command, you
may want to use DLIST to make sure
you're merging the right program. And
if there are conflicting line numbers, you
can use RENUMBER to renumber one of
the two programs. If you want to merge
just part of one program, use DELETE to
eliminate the unwanted lines.
QUIT
Syntax: QUIT
This resets all vectors and disables all
MetaBASIC commands. MetaBASIC is
still protected from BASIC. Reactivate
MetaBASIC with SYS 4864.
READ
Syntax: READ "filename"
See also DLIST.
READ allows you to examine sequen-
tial disk files. The information in the file
is displayed to the screen, without alter-
ing whatever program is in memory.
In the rare case that you want to
use the BASIC READ statement in di-
rect mode (to see if all DATA state-
ments have been read, for example),
you can precede it with a colon to dis-
ringuish it from MetaBASIC 128's
READ command.
RESAVE
Syntax: RESAVE "filename"
The save-with-replace disk command
(SAVE "@0:filename") first saves the
new version of the program and then
scratches the older version, so there
must always be enough free space on
the disk for both versions. Thus, the
command can cause problems if you
don't have enough available disk space
for the new version. The save-with-
replace command also has other prob-
lems and is best avoided.
RESAVE reverses the order — first
it scratches the old version of your pro-
gram from disk, and then it does a
regular SAVE, solving both of the
above problems.
START
Syntax: START "filename"
If you forget where a machine language
program begins, put the disk in the
drive and use this command. This can
help when you have forgotten the SYS
that starts a program. If the command
returns a value of 7169, the program is
probably BASIC or a machine language
program with a single BASIC line so
that it starts with RUN rather than SYS.
Example: START "METABASIC
128" should display 4864 on the screen.
UNNEW
Syntax: UNNEW
You may never need this command, but
it's nice to have it available. If you acci-
dentally type NEW and you want to
retrieve the program, use UNNEW to get
it back. ®
102 Best of COMPUTE! and Gazette
SpeedScript 3.2
For The Commodore 64
Since its introduction in the January
1984 issue of COMPUTEI's Gazette,
SpeedScript has been the most popu-
lar program ever published by COM-
PUTE! Publications. Written entirely
in machine language, SpeedScript
contains nearly every command and
convenience you'd expect from a
quality word processor. The latest
version of Commodore 64 Speed-
Script, version 3.2, incorporates
many improvements, readers' sugges-
tions, and additional debugging. This
version also works on a Commodore
128 in 64 mode.
SpeedScript 3.2, though compact in
size {6K), has many features found
on commercial word processors.
SpeedScript is also very easy to learn
and use. You can start writing with it
the first time you use it. You type in
everything first; preview and make
corrections on the screen; insert and
delete words, sentences, and para-
graphs; and then print out an error-
free draft, letting SpeedScript take
care of things like margins, center-
ing, headers, and footers.
SpeedScript is a writing tool. It
won't necessarily make you a better
writer, but you may become a bet-
ter writer once the tedium of retyp-
ing and erasing is replaced by the
flexibility of a word processor.
Words are no longer frozen in place
Chorles Brannon
by ink; they become free-floating
entities. You no longer think about
typewriting — you can stand back
and work directly with words and
ideas. The distinction between
rough and final drafts becomes
blurred as you perfect your writing
as you write.
Loading SpeedScript
SpeedScript can be loaded just as if it
were a BASIC program. If you load
SpeedScript and list it, you'll see that
it looks like a one-line BASIC pro-
gram. This BASIC line is included
to make the program easy to load,
run, and copy. It's a good idea to
save a couple of extia copies of
SpeedScript, just in case the original
is destroyed. To do this, type
SAVE"SPEEDSCRIPT3.2",8 {or ,1
if you're using tape) after loading
SpeedScript, just as you would for a
BASIC program. Use whatever file-
name you like.
Before using SpeedScript, you
should unplug any cartridges and
expanders. SpeedScript cannot take
advantage of any custom hardware
configurations except those that do
not interfere with normal operations.
Entering Text
When you run SpeedScript, the
screen colors change to dark gray
on light gray except for the top
screen line, which is black with
white letters. This command line is
used to communicate with Speed-
Script. SpeedScript presents all mes-
sages here. The remaining lines of
the screen are used to enter, edit,
and display your document. The
cursor shows where the next char-
acter you type will appear on the
screen. SpeedScript lets you move
the cursor anywhere within your
document, making it easy to find
and correct errors.
To begin using SpeedScript, just
start typing. When the cursor
reaches the right edge of the screen,
it automatically jumps to the begin-
ning of the next line, just as in
BASIC. But unlike BASIC, Speed-
Script never splits words at the right
edge of the screen. If a word you're
typing won't fit at the end of one
line, it's instantly moved to the next
line. This feature, called word-wrap,
makes it much easier to read your
text on the screen. Even if you make
numerous editing changes, Speed-
Script reformats the screen and re-
wraps all words.
Scrolling And
Screen Formatting
When you finish typing on the last
screen line, SpeedScript automati-
cally scrolls the text upward to
make room for a new line at the
bottom. This is similar to the way
BASIC works, but with one excep-
Best of COMPUTE! and Gazette 103
tion: The screen can scroll both up
and down. Imagine the screen as a
24-Iine window on a long, continu-
ous document.
More than 43K of text space is
available in memory, room enough
for 20-40 printed pages of text. To
check at any time how much space
is left, press CTRL-= (hold down
the CTRL key while pressing the =
key). The number which appears
on the command line indicates how
much room remains for characters
of text.
If you're used to a typewriter,
you'll have to unlearn some habits.
First, since the screen is only 40
columns wide, and most printers
have 80-column carriages, it
doesn't make sense to press RE-
TURN at the end of each line as you
do on a typewriter. SpeedScript's
word-wrap takes care of this auto-
matically. Press RETURN only
when you want to force a carriage
return to end a paragraph or to limit
the length of a line. So that you can
see these forced carriage returns,
they appear on the screen as left-
pointing arrows (called return marks
in this article).
When you print your docu-
ment, SpeedScript automatically
formats your text to fit the width of
the paper. Don't manually space
over for a left margin or try to cen-
ter a line yourself as you would on a
typewriter. SpeedScript's printing
routine automatically takes care of
all margins and centering and lets
you customize the margin settings.
Also, don't worry about where a
printed page will end. When print-
ing, SpeedScript automatically fits
your text onto separate pages and
can even put short phrases and
page numbers at the top or bottom
of each page if you want.
Like all good word processors,
SpeedScript has a wide selection of
editing and convenience features.
You can move the cursor a single
space in either direction, or skip to
the next or previous word, sen-
tence, or paragraph. You can also
move the cursor to the top of the
screen, the top of the document, or
the end of the document. The
INST/DEL key is used to insert a
single space or delete a single char-
acter. Other features let you erase a
word, sentence, or paragraph, and
move or copy sentences, words.
and paragraphs to other places in
your document. Using Search-and-
Replace, you can find any phrase
and even automarically change one
phrase to another throughout the
entire document.
You can save your text on tape
or disk, then load it later for addi-
tions and corrections. You can
transpose (exchange) two charac-
ters, change the screen and text col-
ors, send disk commands, read the
disk error channel, and automati-
cally tab over five spaces for para-
graph indents. You don't need to
learn all these commands right
away, but you'll be glad they're
available as you become more com-
fortable with word processing.
Using The Keyboard
Most of SpeedScript's features are
accessed with control-key com-
mands— you hold down CTRL
while pressing another key. In this
article, control-key commands are
abbreviated CTRL-x (where x is the
key you press in combination with
CTRL). An example is the CTRL- =
mentioned above to check on free
memory. CTRL-E means hold
down CTRL and press E. Some-
times you have to hold down both
SHIFT and CTRL as you type the
command key, as in SHIFT-CTRL-
H. Other keys are referenced by
name or function, such as back ar-
row for the left-pointing arrow in
the top-left comer of the keyboard,
pound sign for the British pound
symbol (£), CLR/HOME for the
home-cursor key, SHIFT-CLR/
HOME for the clear-screen key, fl
for special -function key 1, and up
arrow for the upward-pointing ar-
row to the left of the RESTORE key.
Some keys let you move the
cursor to different places in the doc-
ument to make corrections or scroll
text into view. SpeedScript uses a
unique method of cursor movement
that is related to writing, not pro-
gramming. Programmers work with
lines of text and need to move the
cursor up and down a line or left and
right across a line. SpeedScript, how-
ever, is oriented for writers. You
aren't working with lines of text, but
with a continuous document.
Therefore, SpeedScript moves
the cursor by character, word, sen-
tence, or paragraph. SpeedScript de-
fines a word as any sequence of
characters preceded or followed by
a space. A sentence is any sequence
of characters ending with a period,
exclamation point, question mark,
or return mark. And a paragraph is
defined as any sequence of charac-
ters ending in a return mark.
(Again, a return mark appears on
the screen as a left-pointing arrow.)
Here's how to control the
cursor:
• The left/right-cursor key works
as usual; pressing this key by itself
moves the cursor right (forward)
one space, and pressing it with
SHIFT moves the cursor left (back-
ward) one space.
• The up/down-cursor key moves
the cursor forward to the beginning
of the next sentence. Pressing it
with SHIFT moves the cursor back-
ward to the beginning of the previ-
ous sentence.
• The fl function key moves the
cursor forward to the beginning of
the next word. The f2 key (hold
down SHIFT and press fl) moves
the cursor backward to the begin-
ning of the previous word.
• The f3 function key moves the
cursor forward to the beginning of
the next sentence (just like the up/
down-cursor key). The f4 key
{hold down SHIFT and press f3)
moves the cursor backward to the
beginning of the previous sentence
(just like pressing SHIFT and the
up/down-cursor key).
• The f5 function key moves the
cursor forward to the beginning of
the next paragraph. The f6 key
(hold down SHIFT and press f5)
moves the cursor backward to the
beginning of the previous
paragraph.
• CLR/HOME, pressed once by it-
self, moves the cursor to the top of
the screen without scrolling.
Pressed twice, it moves the cursor
to the beginning of the document.
• CTRL-Z moves the cursor to the
bottom of the document.
Correcting Your Typing
One strength of a word processor is
that you need never have mistakes
in your printed document. Since
you've typed everything before you
print it, you have plenty of oppor-
tunities to proofread and correct
your work. The easiest way to cor-
104 Best of COMPUTEI and Gazette
Figure 1: 5peed5cr/p/ Keyboard Map
Insvrt 5
Use [cm] with most commands.
Backspace
(indcnl) Dvlvte In
V /skiff:
bis*r< 255
syacvs
(^(q)(w)
(SVP) text
Delete
v/ shift
Disk Insert a
Ccmmand Heme ^P'ce
cursor /
. /shift
Erase All
© © Gl© ©iD© © 0 Q^^P'
^^^©®l®©l©©fe
.- . \ Vwunt \ Letterin9 / N«xt
iRESTORff
I Re turn
CRSIt (HSR
■ 11
pose
Search
$1. Replace
*■- \ ^Hunt \ • —^ • "'V Cursfl
Replace «•'••' Memory seiitence |,f^/
'"^ leff y /shift: ...
Cursor
Previous
sentence
rifht
CTRL A
CTRLB
CTRLD
CTRLE
CTRLG
CTRLH
CTRL I
CTRL J
CTRLK
CTRLL
CTRLP
CTRLR
CTRL V
CTRLX
CTRLZ
CTRL =
CTRLT
CTRL 4
CTRLE
CTRL 3
CLR/HOME
CRSR
(left/ right)
CRSR
(up/down)
Change case
Change border color
Delete (Sentence, Word, Paragraph)
Erase (Sentence, Word, Paragraph)
Global search and replace
Hunt for phrase
with SHIFT: Select hunt phrase
Enter/exit insert mode
Replace
with SHIFT: Select replace phrase
Kill buffer
Change text character color
Print
Restore buffer
Verify
Transpose characters
Go to end of text
Display amount of free memory
Send disk command or read error channel
Display disk directory
Enter format (printer) commands
Commodore 64 only: Same as CTRL-E
Press once to go to top of screen
Hold down to go to top of text
with SHIFT: Erase all text
Move the cursor left one character
with SHIFT: Move the cursor right one character
Got to next sentence
with SHIFT: Go to previous sentence
RUN/STOP
RESTORE
RETURN
INST/DEL
Indent 5 spaces
with SHIFT: Insert 255 spaces
Exit SpeedScript (Commodore 64)
with RUN/STOP: Exit SpeedScript (VIC-20)
Backspace
with CTRL: Delete character under cursor
and close up text
with SHIFT and CTRL: Delete all spaces
from cursor to next character
Return mark
with SHIFT: End paragraph, add an extra
return mark, and indent next paragraph
Delete character
with SHIFT: Insert space
(1 Next Word
(2 Previous Word
£3 Next Sentence
£4 Previous Sentence
£5 Next Paragraph
£6 Previous Paragraph
£7 Load
£8 Save
rect something is just to type over
it, but there are other ways too.
Sometimes you'll have to in-
sert characters to make a correction.
Maybe you accidentally dropped a
letter, typing hngry instead of
hungry. When you change the
length of a word, you need to push
over everything to the right of the
word to make room for the inser-
tion. Use SHIFT-INST/DEL to
open up a single space, just as in
BASIC. Merely position the cursor
at the point where you want to
insert a space, and press SHIFT-
INST/DEL.
Insert Modes
It can be tedious to use the SHIFT-
INST/DEL key to open up enough
space for a whole sentence or para-
Best of COMPUTE I and Gazette 1 05
graph. For convenience, SpeedScript
has an insert mode that automati-
cally inserts space for each charac-
ter you type. In this mode, you can't
type over characters; everything is
inserted at the cursor position. To
enter insert mode, press CTRL-I.
To cancel insert mode, press CTRL-
I again. {This kind of command key,
one which is used to turn some-
thing both on and off, is called a
toggle). To let you know you're in
insert mode, the normally black
command line at the top of the
screen turns blue.
Insert mode is the easiest way
to insert text, but it can become too
slow when you're working with a
very long document because it
must move all the text following the
cursor position. Although Speed-
Script uses turbocharged memory-
move routines, the 6510 micro-
processor can go only so fast. So
SpeedScript has even more ways to
insert blocks of text.
One way is to use the RUN/
STOP key. It is programmed in
SpeedScript to act as a five-space
margin indent. To end one para-
graph and start another, press RE-
TURN twice and press RUN/
STOP. Alternatively, you can press
SHIFT-RETURN, which does this
automatically. You can use RUN/
STOP to open up more space than
SHIFT-INST/DEL. No matter how
much space you want to insert,
each insertion takes the same
amount of time. So the RUN/
STOP key can insert five spaces five
times faster than pressing SHIFT-
INST/DEL five times.
There's an even better way,
though. Press SHIFT-RUN/STOP
to insert 255 spaces. This is enough
room for a sentence or two. You can
press it several times to open up as
much space as you need. And
SHIFT-RUN/STOP is fast. (You
don't want to be in insert mode
when you use this trick; that would
defeat its purpose.)
Since the INST/DEL key is
also slow when you're working
with large documents (it, too, must
move all text following the cursor),
you may prefer to use the back-
arrow (•-) key to backspace. The
back-arrow key by itself moves the
cursor left one space and blanks out
that position. It's more like a back-
space than a delete.
After you're finished inserting
with these methods, there will
probably be some inserted spaces
left over that you didn't use. Just
press SHIFT-CTRL-back arrow.
This instantly deletes all extra
spaces between the cursor and the
start of the following text.
SHIFT-CTRL-back arrow is also
generally useful whenever you
want to delete a bunch of spaces.
Erasing Text
Inserting and retyping are not the
only kinds of corrections you'll
need to make. Part of writing is
separating the wheat from the
chaff. On a typewriter, you pull out
the paper and throw it away. Speed-
Script lets you be more selective.
Press the INST/DEL key by
itself to erase the character to the
left of the cursor. All the following
text is pulled back to fill the vacant
space.
Press CTRL-back arrow to de-
lete the character on which the cur-
sor is sitting. Again, all the
following text is moved toward the
cursor to fill the empty space.
These keys are fine for minor
deletions, but it could take a long
time to delete a whole paragraph
this way. So SpeedScript has two
commands that can delete an entire
word, sentence, or paragraph at a
time. CTRL-E erases text after (to
the right of) the cursor position, and
CTRL-D deletes text behind (to the
left of) the cursor.
To use the CTRL-E (erase)
mode, first place the cursor at the
beginning of the word, sentence, or
paragraph you want to erase. Then
press CTRL-E. The command line
shows the message Erase (S,W,P):
RETURN to exit. Press S to erase a
sentence, W for a word, or P for a
paragraph. Each time you press one
of these letters, the text is quickly
erased. You can keep pressing S, W,
or P until you've erased all the text
you wish. Then press RETURN to
exit the erase mode.
The CTRL-D (delete) mode
works similarly, but deletes only
one word, sentence, or paragraph at
a time. First, place the cursor after
the word, sentence, or paragraph
you want to delete. Then press
CTRL-D. Next, press S, W, or P for
sentence, word, or paragraph. The
text is immediately deleted and you
return to editing. You don't need to
press RETURN to exit the CTRL-D
mode unless you pressed this key
by mistake. (In general, you can es-
cape from any command in Speed-
Script by simply pressing RETURN.)
CTRL-D is most convenient when
the cursor is already past what
you've been typing.
The Text Buffer
When you erase or delete with
CTRL-E and CTRL-D, the text isn't
lost forever. SpeedScript remembers
what you've removed by storing
deletions in a separate area of mem-
ory called a buffer. The buffer is a
fail-safe device. If you erase too
much or change your mind, just
press CTRL-R to restore the dele-
tion. However, be aware that
SpeedScript remembers only the last
erase or delete you performed.
Another, more powerful use of
this buffer is to move or copy sec-
tions of text. To move some text
from one location in your docu-
ment to another, first erase or delete
it with CTRL-E or CTRL-D. Then
move the cursor to where you want
the text to appear and press CTRL-
R. CTRL-R instantly inserts the
contents of the buffer at the cursor
position. If you want to copy some
text from one part of your docu-
ment to another, just erase or delete
it with CTRL-E or CTRL-D, restore
it at the original posifion with
CTRL-R, and then move the cursor
elsewhere and press CTRL-R to re-
store it again. You can retrieve the
buffer with CTRL-R as many times
as you like.
Important: The CTRL-E erase
mode lets you erase up to the maxi-
mum size of the buffer (12K, or over
12,000 characters). CTRL-E normal-
ly removes the previous contents of
the buffer each time it is used. Keep
this in mind if there's something in
the buffer you'd rather keep. If you
don't want the current buffer con-
tents to be erased, press
SHIFT-CTRL-E instead. This pre-
serves the buffer contents and adds
newly erased text to the buffer.
Now you can see why CTRL-D
lets you delete only a single sen-
tence, word, or paragraph at a time.
If it didn't, the deleted text would
be added to the end of the buffer,
and when you pressed CTRL-R to
retrieve the buffer, the deleted text
106 Best of COfwWUTEl and Gazette
would be out of order (since CTRL-D
deletes backward).
If you ever need to erase the
contents of the buffer, press CTRL-K
(remember kill buffer).
It's relatively easy to move
blocks of text between documents.
Using the buffer, you can load one
document, erase some text into the
buffer, load another document, and
then insert the buffer contents into
the new document. You can also use
the buffer to save an often-used
word or phrase, then repeat it when-
ever you need it.
Starling From Scratch
If you want to start a new document
or simply obliterate all your text,
press SHIFT-CLR/HOME. Speed-
Script asks, ERASE ALL TEXT: Are
you sure? (Y/N). This is your last
chance. If you don't want to erase
the entire document, press N or any
other key. Press Y to perform the
irreversible deed. There is no way
to recover text wiped out with Erase
All.
The RUN/STOP-RESTORE
reset combination on the Commo-
dore 64 has been disabled in
SpeedScript.
As mentioned above, pressing
RUN/STOP by itself inserts five
spaces for indenting paragraphs.
Pressing just RESTORE brings
up the message Exit SpeedScript: Are
you sure? (Y/N). if you press Y for
yes, you exit to BASIC. (If you press
N or any other key at the prompt,
you return to editing text with no
harm done.) Once in BASIC you'll
still have one chance to reenter
SpeedScript without losing your
text — simply enter RUN and your
text should be intact when Speed-
Script is restarted. (Your chances of
recovering text decrease if you exe-
cute other commands while in
BASIC.)
Searcti-And-Replace
Here's another feature only a com-
puter can bring to writing. Speed-
Script has a Hunt command that
searches through your document to
find a selected word or phrase. A
Replace option lets you automati-
cally change one word to another
throughout the document. Since on
the 64, CTRL-S is synonymous
with the CLR/HOME key (try it),
and since SpeedScript already uses
CTRL-R, several command keys
which are slightly less than mne-
monic have been designated for
these functions.
SHIFT-CTRL-H activates the
Hunt feature, SHIFT-CTRL-J (J is
used because it's next to the H) lets
you selectively hunt and replace,
and CTRL-G (Global) is for auto-
matically searching and replacing.
Searching for something is a
two-step process. First, you need to
tell SpeedScript what to search for;
then you must trigger the actual
search. Press SHIFT-CTRL-H. The
command line says Hunt for:. Type
in what you'd like to search for —
the search phrase — up to 29 charac-
ters. SpeedScript remembers the
search phrase until you change it.
(Incidentally, when you are typing
on the command line, the only edit-
ing key that works is INST/DEL for
backing up. SpeedScript does not let
you enter control codes or cursor
controls when you're typing on the
command line.) Press RETURN
after you've entered the search
phrase. If you press RETURN alone
without typing anything, the Hunt
command is canceled.
When you're ready to search,
press CTRL-H (without the
SHIFT). SpeedScript looks for the
next occurrence of the search
phrase starling from the current cur-
sor position. If you want to hunt
through the entire document, press
CLR/HOME twice to move the cur-
sor to the very top before beginning
the search. Each time you press
CTRL-H, SpeedScript looks for the
next occurrence of the search
phrase and places the cursor at the
start of the phrase. If the search fails
(if the search phrase isn't found
before the end of the document),
you'll see the message Not Found.
CTRL-J (Replace) works to-
gether with CTRL-H. After you've
specified the search phrase with
SHIFT-CTRL-H, press SHIFT-
CTRL-J to select the replace phrase.
SpeedScript also remembers this re-
place phrase until you change it.
You can press RETURN alone at the
Replace with: prompt to select a null
replace phrase. When you hunt and
replace, this deletes the located
phrase. To search and replace man-
ually, start by pressing CTRL-H.
After SpeedScript has found the
search phrase, press CTRL-J (with-
out SHIFT) if you want to replace
the phrase. If you don't want to
replace the phrase, don't press
CTRL-J. You are not in a special
search-and-replace mode. You're
free to continue writing at any time.
CTRL-G links CTRL-H and
CTRL-J together. It first asks Hunt
for:, then Replace with:, and then
automatically searches and replaces
throughout the document starting
at the cursor position.
A few hints and cautions: First,
realize that if you use' the as the
search phrase, SpeedScript dutifully
finds the embedded the in words
like therefore and heathen. If you
changed all occurrences of the to
cow, these words would become
cowrefore and heacown. If you want
to find or replace a single word,
include a space as the first character
of the word, since almost all words
are preceded by a space. Naturally,
if you are replacing, you need to
include the space in the replace
phrase, too. Also, SpeedScript dis-
tinguishes between uppercase and
lowercase. The word Meldids does
not match with meldids. SpeedScript
will not find a capitalized word un-
less you capitalize it in the search
phrase. To cover all bases, you will
sometimes need to make two
passes when replacing a word.
Keep these things in mind when
using CTRL-G since you don't have
a chance to stop an out-of-control
search-and-replace.
Storing Your Document
Another advantage of word process-
ing is that you can store your writ-
ing. A Commodore disk, with 170K
of storage space, can store 80-150
pages of text as several document
files. Tapes also have great storage
capability — but they're slower.
It's easy to store a document.
First, make sure your cassette or
disk drive is plugged in and func-
tioning. Insert a tape or disk into
the drive. Press the £8 function key
(SHIFT-f7). You'll see the prompt
Save:. Type in a filename for your
document. A filename can be up to
16 characters long and can include
almost any characters, but do not
use question marks or asterisks.
You cannot use the same name for
two different documents on a single
disk. To replace a document al-
ready on disk using the same file-
8est of COMPUTEI and Gazette 1 07
name, precede your filename with
the characters @0: or @:. You can
also precede the filename with
either 0: or 1: if you use a dual disk
drive. SpeedScript cannot access a
second disk drive with a device
number of 9.
After entering the filename,
answer the prompt Tape or Disk by
pressing either the T or D key. You
can cancel the Save command by
pressing RETURN without typing
anything else at either the Save: or
Tape or Disk prompt.
After you press T for tape,
press RECORD and PLAY simulta-
neously on the cassette drive.
SpeedScript begins saving. If you
press D for disk, your file is stored
relatively quickly {if the disk is for-
matted and has room). After the
Save, SpeedScript reports No errors
if all is well, or reads and reports the
disk error message otherwise.
The Commodore 64 is not able
to detect errors during a tape Save,
so SpeedScript provides a verify
command. Rewind the tape, press
CTRL-V, and then type the file-
name. Press T for tape; press PLAY
on the recorder. SpeedScript will
notify you if there is an error.
Loading A Document
To recall a previously saved docu-
ment, press the f7 function key.
Answer the Load: prompt with the
filename. Insert the tape or disk
with the file you want to load and
press T or D. Press PLAY if you're
using tape. SpeedScript loads the file
and should display No errors. Oth-
erwise, SpeedScript reads the error
channel of the disk drive or reports
Load error for tape.
It's important to position of the
cursor correctly before loading a
file. SpeedScript starts loading at the
cursor position, so be sure to press
CLR/HOME twice or SHIFT-CLR/
HOME (Erase All) to move the cur-
sor to the start of text space, unless
you want to merge two documents.
When you press f7 to load, the com-
mand line turns green to warn you
if the cursor is not at the top of the
text space.
To merge two or more files,
simply load the first file, press
CTRL-Z to move the cursor to the
end of the document, and then load
the file you want to merge. Do not
place the cursor somewhere in the
middle of your document before
loading. A Load does not insert the
characters coming in from tape or
disk into your old text, but over-
writes all existing text after the cur-
sor position. The last character
loaded becomes the new end-of-
text marker, and you cannot access
any of your old text that may ap-
pear after this marker.
Disk Connmands
Sometimes you forget the name of a
file or need to scratch or rename a
file. SpeedScript gives you full con-
trol over the disk drive. To view the
disk directory, press CTRL-4. The
directory will be displayed on the
screen without affecting the text in
memory. Press any key to pause
scrolling. Afterward, press RE-
TURN to switch back to your text.
All the other disk commands are
also accessible. Just press CTRL-T
(up arrow); then type in a 1541 disk
command. You don't need to type
PRINT#15 or any quotation marks
as you do in BASIC — just the actual
command. If you press RETURN
without typing a disk command,
SpeedScript displays the disk status.
It also displays the status after com-
pleting a disk command. Here is a
quick summary of disk commands:
nidisk name^D This formats
(NEWs) a disk. You must format a
new disk before using it for the first
time. The disk name can be up to 16
characters. The ID (identifier) is any
two characters. You must use a
unique ID for each disk you have.
Don't forget that this command
erases any existing data on a disk.
S'.filename Scratches (deletes) a
file from the disk.
r:newname = oldname
Changes the name of file oldname to
newname.
c-.backup filename = original
name Creates a new file (the back-
up copy) of an existing file (original
copy) on the same disk.
i: Initializes a disk. This resets
several disk variables and should
be used after you swap disks or
when you have trouble reading a
disk.
v: Validates a disk. This recom-
putes the number of available
blocks and can sometimes free up
disk space. Always use Validate if
you notice a filename on the direc-
tory flagged with an asterisk. Vali-
date can take awhile to finish.
uj: Resets the disk drive to
power-up state.
Additional Features
SpeedScript has a few commands
that don't do much, but are still nice
to have. CTRL-X exchanges the
character under the cursor with the
character to the right of the cursor.
Thus, you can fix transposition er-
rors with a single keystroke. CTRL-
A changes the character under the
cursor from uppercase to lowercase
or vice versa. You can hold down
CTRL-A to continue changing the
following characters.
Press CTRL-B to change the
background and border colors. Each
time you press CTRL-B, one of 16
different background colors ap-
pears. Press CTRL-L to cycle be-
tween one of 16 character (lettering)
colors. The colors are preserved un-
til you change them. In fact, if you
exit and resave SpeedScript, the pro-
gram will load and run with your
color choice in the future.
Printing
If you already think SpeedScript has
plenty of commands, wait until you
see what the printing package of-
fers. SpeedScript supports an array
of powerful formatting features. It
automatically fits your text between
left and right margins that you can
specify. You can center a line or
block it against the right margin.
SpeedScript skips over the perfora-
tion on continuous -form paper, or it
can wait for you to insert single-
sheet paper. A line of text can be
printed at the top of each page (a
header) and/or at the bottom of
each page (a footer), and it can in-
clude automatic page numbering,
starting with whatever number you
like.
SpeedScript can print on differ-
ent lengths and widths of paper, and
single-, double-, or triple-spacing (or
any spacing, for that matter) is easy.
You can print a document up to the
size that can be held on a disk or
tape by linking several files together
during printing. You can print to the
screen or to a sequential disk file
instead of to a printer. Other fea-
tures let you print to most printers
using most printer interfaces, and
send special codes to the printer to
108 Best of COMPUTE! and Gazette
control features like underlining,
boldfacing, and double-width type
(depending on the printer).
But with all this power comes
the need to learn additional com-
mands. Fortunately, SpeedScript sets
most of these variables to a default
state. If you don't change these set-
tings, SpeedScript assumes a left
margin of 5, a right-margin position
of 75, no header or footer, single-
spacing, and continuous-paper page
feeding. To begin prinhng, simply
press CTRL-P. If your printer is at-
tached, powered on, and selected
(online), SpeedScript begins printing
immediately. To cancel printing,
hold down the RUN/STOP key un-
til printing stops.
Before printing, be sure the pa-
per in your printer is adjusted to
top-of-form (move the paper perfo-
ration just above the printing ele-
ment). CTRL-P assumes a
Commodore printer, so it's helpful
if your interface simulates the
modes and codes of the Commo-
dore 1525, 1526,orMPS-801,-802,
or -803 printers. CTRL-P prints
with a device number of 4 and a
secondary address of 7 (uppercase/
lowercase mode).
If CTRL-P doesn't work for
you, try another variation,
SHIFT-CTRL-P. Answer the
prompt Print to: Screen, Disk, Print-
er? with the single letter S, D, or P.
Press any other key to cancel the
command.
If you press P for printer,
SpeedScript requests two more key-
strokes. First, answer the Device
number prompt with a number from
4 through 7. This lets you print to
one of several printers addressed
with different device numbers.
Next, answer the Secondary address
prompt with a number from 0
through 9.
Non-Commodore Printers
The secondary address is used on
most non-Commodore printer in-
terfaces to control special features.
For example, you can bypass the
emulation features and use graph-
ics mode to communicate directly
with your printer (see the true
ASCII command below). Consult
the list of secondary addresses in
your printer interface manual.
SpeedScript does not work properly
with RS-232 serial printers or
interfaces.
An additional note: Some print-
ers and interfaces incorporate an
automatic skip-over-perforation fea-
ture. The printer skips to the next
page when it reaches the bottom of a
page. Since SpeedScript already con-
trols paper feeding, you need to turn
off this automatic skip-over-perf
feature (usually, by sending out con-
trol codes) before running Speed-
Script, or paging won't work
properly. Remember, sometimes the
printer controls the skip-over-perf
feature, sometimes the interface,
and sometimes even both.
The Commodore 64 version of
SpeedScript has been tested with the
following printers: Commodore
1525 and 1526; MPS-801, -802, and
-803; C. Itoh Prowriter 8510; Epson
MX-80; Gemini 10-X; Star SG-10,
SG-IOC, and SD-10; Okimate 10
and 20; Okidata 82 and 92; and
Hush-80 CD. SpeedScript has also
been tested with these printer inter-
faces: Cardco A/B/G+ and G Wiz,
Tymac Connection, Xetec, Turbo-
Print, and MW-350. SpeedScript
should work even if your printer or
interface is not on this list. These
are just the ones that have been
tested.
Be sure your printer or inter-
face supplies its own linefeeds.
Again, consult your manuals and
insure that either your printer or
interface (but not both) supplies an
automatic linefeed after carriage re-
turn. To test this, print a small sam-
ple of text with CTRL-P. Since the
default is single-spacing, you
should not see double-spacing, nor
should all printing appear on the
same line. If you still aren't getting
linefeeds, use the linefeed com-
mand discussed below.
Printing To Screen And DIsIc
SHIFT-CTRL-P prints to the screen
when you press S. The screen col-
ors change to white letters on a
black background, and what ap-
pears on the screen is exactly what
would print on the printer. It takes
two screen lines to hold one 80-
column printed line, of course. If
you use double-spacing (see be-
low), it's much easier to see how
each line is printed. With this
screen preview, you can see where
lines and pages break. To freeze
printing, hold down either of the
SHIFT keys, or engage SHIFT
LOCK. The border color changes to
white while SHIFT is held down.
When printing is finished, press
any key to return to editing.
SHIFT-CTRL-P prints to a disk
file when you press D. Enter the
filename when it's requested.
SpeedScript sends out all printer
information to a sequential file. You
can use other programs to process
this formatted file. Try this simple
example:
10 OPEN 1,4
20 OPEN 2,S,S," filename"
30 GET#2,A$:SS = ST: PRINT#1,A$;: IF
SS = 0 THEN 30
40 PRINT#1: CLOSEl
50 CLOSE2
This program dumps the disk
file specified by the filename in line
20 to any printer. You can use it to
print SpeedScript files (produced
with SHIFT-CTRL-P) on another
Commodore computer and printer
without running SpeedScript.
Change line 10 to OPEN 1,2,0,
CHR$(6) to dump the file to a 300-
baud modem or RS-232 printer, or
OPEN 1,3 to display it on the
screen.
Formatting Commands
The print-formatting commands
must be distinguished from normal
text, so they appear onscreen in
reverse field with the text and back-
ground colors switched. You enter
these reverse- video letters by press-
ing CTRL-£ (pound sign) or CTRL-
3, which is easier to type with one
hand. Answer the prompt Enter for-
mat key: by pressing a single key.
This key is inserted into text in
reverse video. All lettered printer
commands should be entered in
lowercase (unshifted). During
printing, SpeedScript treats these
characters as printing commands.
There are two kinds of printing
commands, which will be called
stage 1 and stage 2. Stage 1 com-
mands usually control variables
such as left margin and right mar-
gin. Most are followed by a num-
ber, with no space between the
command and the number. Stage 1
commands are executed before a
line is printed.
Stage 2 commands, like center-
ing and underlining, are executed
while the line is being printed.
Usually, stage 1 commands must be
Best of COMPUTE! and Gazette 1 09
on a line of their own, although you
can group several stage 1 com-
mands together on a line. Stage 2
commands are by nature embedded
within a line of text. A sample stage
1 line could look like this:
II10D50Q2
Embedded stage 2 commands look
like this:
BThls line Is centered. 4-
This lsClunderllninglQ.4-
Stage 1 Commands
1 Left margin. Follow with a
number from 0 to 255. Use 0 for no
margin. Defaults to 5. See Figure 2
for an illustration of margin
settings.
r Right margin position, a
number from 1 to 255. Defaults to
75. Be sure the right-margin value
is greater than the left-margin val-
ue, or SpeedScript will become ex-
tremely confused. Some printer
interfaces force a certain printing
width, usually 80 characters wide.
You'll need to disable this in order
to permit SpeedScript to print lines
longer than 80 characters.
I Top margin. The position
at which the first line of text is
printed, relative to the top of the
page. Defaults to 5. The header (if
any) is always printed on the first
line of the page, before the first line
of text.
b Bottom margin. The line at
which printing stops before con-
tinuing to the next page. Standard
8V2 X 11-inch paper has 66 lines
on most printers (6 vertical lines of
text per inch is standard for Com-
modore printers). Bottom margin
defaults to the fifty-eighth line. The
footer (if any) is always printed on
the last line of the page, after the
last line of text.
p Page length. Defaults to
66. If your printer does not print six
lines per inch, multiply lines-per-
inch by 1 1 to get the page length.
European paper is usually longer
than American paper — IP/a or 12
inches. Try a page length of 69 or
72.
s Spacing. Defaults to single-
spacing. Follow with a number
from 1 to 255. Use 1 for single-
spacing, 2 for double-spacing, and
3 for triple-spacing.
@ Start numbering at page
Figure 2: Graphic Representation Of Margin Settings
Values shov^n are default settings
Header
rannon/SpeedScript/*
Right Marfin
i FMter
rannon/SpeedScripl/*
79
Figure 3: Quick Reference Chart Format (Printer
Commands)
Enter these commands with CTRL-£ or CTRL-3:
CoMMano Description
Default
Command Desc npt ion
Default
Q Tru* ASCII
Off
□
N»x-t pag*
in Bo-tton nargin
58
D
Pag* length
86
D
Right nargin
75
Qj Edge righl
B
Spac ing
1
KJ FooTvr
D
Top nargin
9
El Link f il»w
□
Under I ine
El H»ad»r
Q
□
Colunns across
80
m
Initial page u
1
MM Laft nargin
5
a
Skip pages
^J Margin rel«asa
□
Print page M
CxamplesI
QQ SpeedScript/Q 4- Centered Header with page nunber
01807802^
D 91 SpeedScript. ^
K neM format I sdriveSIf ilenaM*
Left nargin 18, right nargin 78,
double spac ing .
Goto and continue printing with
f ilenane "SpeedScript."
1 1 0 Best ot COMPUTE! and Gazette
number given. Page numbering
normally starts with 1.
? Disables printing until se-
lected page number is reached. For
example, a value of 3 would start
printing the third page of your doc-
ument. Normally, SpeedScript starts
printing with the first page.
X Sets the page width, in col-
umns {think a cross). Defaults to 80.
You need to change this for the sake
of the centering command if you
are printing in double-width or
condensed type, or if you're using a
40-column or wide-carriage printer.
n Forced paging. Normally,
SpeedScript prints the footer and
moves on to the next page only
when it has finished a page, but you
can force it to continue to the next
page by issuing this command. It
requires no numbers.
m Margin release. Disables
the left margin for the next printed
line. Remember that this executes
before the line is printed.
a True ASCII. Every charac-
ter is assigned a number in the
ASCII (American Standard Code
for Information Interchange) char-
acter set. Most printers use this true
ASCII standard, but Commodore
printers exchange the values for up-
percase and lowercase to match
Commodore's own variation of
ASCII. Some printer interfaces do
not translate Commodore ASCII
into true ASCII, so you need to use
this command to tell SpeedScript to
translate. Also, you will sometimes
want to disable your interface's em-
ulation mode intentionally in order
to control special printer features
that would otherwise be rejected by
emulation. Place this command as
the first character in your docu-
ment, even before the header and
footer definitions. Don't follow it
with a number.
Since, in effect, the true ASCII
command changes the case of all
letters, you can type something in
lowercase and use true ASCII to
make it come out in uppercase.
w Page wait. Like the true
ASCII command, this one should
be placed at the beginning of your
document before any text. With
page wait turned on, SpeedScript
prompts you to Insert next sheet,
press RETURN when each page is
finished printing. Insert the next
sheet, line it up with the printhead.
and then press RETURN to contin-
ue. Page wait is ignored during disk
or screen output.
j Select automatic linefeeds
after carriage return. Like a and w,
this command must be placed before
any text. Don't use this command to
achieve double-spacing, but only if
all text prints on the same line.
i Information. This works
like REM in BASIC. You follow the
command with a line of text, up to
255 characters, ending in a return
mark. This line will be ignored dur-
ing printing; it's handy for making
notes to yourself such as the file-
name of the document.
h Header define and enable.
The header must be a single line of
text ending with a return mark (up
to 254 characters). The header
prints on the first line of each page.
You can include stage 2 commands
such as centering and page num-
bering in a header. You can use a
header by itself without a footer.
The header and footer should be
defined at the top of your docu-
ment, before any text. If you want
to prevent the header from printing
on the first page, put a return mark
by itself at the top of your docu-
ment before the header definition.
f Footer define and enable.
The footer must be a single line of
text ending in a return mark (up to
254 characters). The footer prints
on the last line of each page. As
with the header, you can include
stage 2 printing commands, and
you don't need to set the header to
use a footer.
g Go to (link) next file. Put
this command as the last line in
your document. Follow the com-
mand with the letter D for disk or T
for tape, then a colon (:), and final-
ly, the name of the file to print next.
After the text in memory is printed,
the link command loads the next
file into memory. You can continue
linking in successive files, but don't
include a link in the last file. Before
you start printing a linked file,
make sure the first of the linked
files is in memory. When printing is
finished, the last file linked to will
be in memory.
Stage 2 Commands
These commands either precede a
line of text or are embedded within
one.
c Centering. Put this at the
beginning of a line you want to
center. This will center only one
line, ending in a return mark. Re-
peat this command at the beginning
of every line you want centered.
Centering uses the page-width set-
ting (see above) to center the line
properly. To center a double-width
line, either set the page width to 40
or pad out the rest of the line with
an equal number of spaces. If you
use double-width, remember that
the spaces preceding the centered
text will be double-wide spaces.
e Edge right. This command
will cause a line to be aligned with
the right margin when it is printed.
That is, spaces v^ill be inserted in
front of the line so that the last
character in the line will be printed
at the right margin. Place the com-
mand at the beginning of the line
you want aligned; it will only affect
one line at a time, each ending with
a return mark. Repeat this com-
mand at the beginning of every line
you want aligned to the right. Note
that this is not the same as right
justification — a feature found on
some word processors that adjusts
printing to align both the left and
right margins — since the edge-right
command aligns only one line, and
only at the right margin. SpeedScript
has no right-justification feature.
# When SpeedScript encoun-
ters this command, it prints the cur-
rent page number. You usually
embed this within a header or footer.
u A simple form of underlin-
ing. It does not work on Commo-
dore printers, but only on printers
that recognize CHR${8) as a back-
space and CHR$(95) as an under-
line character. Underlining works
on spaces, too. Use the first u to
start underlining and another one
to turn off underlining.
Fonts And Styles
Most dot-matrix printers are capa-
ble of more than just printing text at
ten characters per inch. The Com-
modore MPS-801 can print in dou-
ble-width and reverse field. Some
printers have several character sets,
with italic and foreign language
characters. Most can print in
double-width (40 characters per
line), condensed (132 characters
per line), and in either pica or elite.
Other features include programma-
Best of COMPUTEI and Gazette 1 1 1
ble characters, programmable tab
stops, and graphics modes. Many
word processors customize them-
selves to a particular printer, but
SpeedScript was purposely designed
not to be printer-specific. Instead,
SpeedScript lets you define your
own stage 2 printing commands.
You define a programmable
printkey by choosing any character
that is not already used for other
printer commands. The entire up-
percase alphabet is available for
printkeys, and you can choose let-
ters that are related to their function
(like D for double-width). You enter
these commands like printer com-
mands, by first pressing CTRL-3.
To define a printkey, just press
CTRL-3, then the key you want to
assign as the printkey, then an
equal sign { = ), and finally the
ASCII value to be substituted for
the printkey during printing. For
example, to define the + key as the
letter z, you first look up the ASCII
value of the letter z (in either your
printer manual or user's manual).
The ASCII value of the letter z is 90,
so the definition is E3 = 904-
Now, anywhere you want to print
the letter z, substitute the printkey:
GadDoolcs! The Doo isDany)^-
This will appear on paper as
Gadzooks! The zoo is zany!
More practically, look up the
value of reverse-on and reverse-off.
Reverse-on, a value of 18, prints all
text in reverse video until canceled
by reverse-off (a value of 146) or a
carriage return. So, define SHIFT-R
as 18 and SHIFT-O as 146. Any-
where you want to print a word in
reverse, bracket the word with
printkey R and printkey O.
You can similarly define what-
ever codes your printer uses for fea-
tures like double-width or
emphasized mode. For your
convenience, four of the printkeys
are predefined, though you can
change them. Printkey 1 is defined
as a 27, the value of the ESCape
code used to precede many two-
character printer commands. (With
some printer interfaces, you must
send two ESCape codes to bypass
the interface's emulation.) For ex-
ample, the Epson command for
double strike is ESC-G. You can
select it in SpeedScript with
Ik
Printkey 2, a value of 14, goes
into double-width mode on most
printers, and printkey 3, a value of
15, turns off double-width on some
printers and selects condensed
mode on others. Printkey 4 is de-
fined as 18, which selects reverse
field with Commodore printers
(and on some graphics interfaces in
emulation mode) or condensed
mode on some other printers.
With so many codes available,
you can even design custom logos
and symbols using your printer's
graphics mode. For example, on the
1525/MPS-801, you can draw a
box (perhaps for a checklist) by first
setting the appropriate codes:
[BEEEDloothpaste 4-
Then display the box with text by
typing
D=B 0=25 B=255D= 193 4-
This appears on paper as
D Toothpaste
Keep one thing in mind about
printkeys. SpeedScript always as-
sumes it is printing to a rather
dumb, featureless printer, the least
common denominator. SpeedScript
doesn't understand the intent of a
printkey; it just sends its value out.
So if you make one word within a
line double-width, it may make the
line overflow the specified right
margin. There's no way for Speed-
Script to include built-in font and
type-style codes without being cus-
tomized for a particular printer,
since no set of codes is universal to
all printers.
SpeedScript Mastery
It may take you awhile to fully mas-
ter SpeedScript, but as you do you'll
discover many ways to use the edit-
ing and formatting commands. For
example, there is a simple way to
simulate tab stops, say, for a colum-
nar table. Just type a period at every
tab-stop position. Erase the line;
then restore it multiple times.
When you are filling in the table.
just use word-left/word-right to
jump quickly between the periods.
Or you can use the programmable
printkeys to embed your printer's
own commands for setting and
jumping to tab stops.
SpeedScript can also be used as
a simple database manager. Type in
the information you need; then
store it as a SpeedScript document.
The search feature lets you quickly
find information, especially if you
use graphics characters to flag key
lines. You can search for the graph-
ics characters and quickly skip from
field to field.
You don't have to change or
define printer commands every
time you write. Just save these defi-
nitions as a small text file, and load
this file each time you write. You
can create many custom definition
files and have them ready to use on
disk. You can create customized
"fill in the blank" letters. Just type
the letter, and everywhere you'll
need to insert something, substitute
a graphics symbol. When you're
ready to customize the letter, just
hunt for each graphics symbol and
insert the specific information.
SpeedScript does not work with
any 80-column video boards or soft-
ware 80-column emulators. Speed-
Script also wipes out most kinds of
resident (RAM-loaded) software, in-
cluding most software-simulated
printer drivers. However, you can
print to disk using SHIFT-CTRL-P,
and then dump the disk file to the
printer from BASIC.
File Compatibility
SpeedScript documents are stored as
program files (PRO type on disk).
Naturally, you can't load and run a
SpeedScript file from BASIC. The
characters are stored in their screen
code (POKE) equivalents. Several
commercial word processors store
text similarly, including WordPro
3+ and PaperClip. As a matter of
fact, two commercial spelling
checkers designed for WordPro also
work with SpeedScript: SpellRight
Plus (from Professional Software)
and SpellPro 64 (from Pro-Line
Software). ©
112 Best of COMPUTE! and Gazette
Fontmaker
For Commodore 64
SpeedScript
Special fonts add character to any
screen display. This article shows
how to use custom character sets with
any version 3.0 or higher of Commo-
dore 64 SpeedScript.
Writing with a word processor
often means staring for hours at a
video screen. For word processing,
screen clarity is especially vital. It's
best to have a good-quality color or
monochrome monitor, but a clear,
readable character set helps, too.
Commodore's built-in character set
works well and is especially de-
signed for the low resolution of the
average TV. However, it can be im-
proved. Besides, it's just plain fun
to use your own custom character
set. A custom font personalizes
your computer and sets it apart
from the crowd. There are many
font editor programs to design
character sets for use with BASIC,
but until now there was no way to
use them with SpeedScript.
To use the program LOAD and
RUN "Fontmaker Boot," which
configures the memory for "Font-
maker,"the actual workhorse.
Fontmaker only installs a char-
acter set that has been previously
created; it has no provisions for cre-
ating the custom characters. You
can easily define your own fonts
with a character editor such as
"Ultrafont+".
When you run Fontmaker, it
prompts you for the name of the
character set you'd like to use. By
default, the cursor blinks on the
filename SPEED.SET. If you'd like
to use a font with that name, just
press RETURN. Otherwise, type in
Chorles Brannon
a new name, overwriting SPEED.
SET. If you want to run SpeedScript
without a custom set, just type X at
the prompt (you don't need to erase
SPEED.SET; just enter an X).
The character set you've previ-
ously created with a font editor pro-
gram must be on the same disk as
the SpeedScript program. Font-
maker looks for SpeedScript under
the filename SS. Either insert a dif-
ferent filename in line 140 of Font-
maker or rename your copy of
SpeedScript to SS. Fontmaker loads
in SpeedScript, bumps up the start of
text space (reducing available mem-
ory by about 1 1 K), loads the charac-
ter set into that gap, switches the
screen to the new character set,
then runs SpeedScript.
It's Only Temporary
Fontmaker does not permanently
change SpeedScript unless you re-
save the word processor at this
point (not recommended). In other
words, Fontmaker installs the cus-
tom character set only for the cur-
rent session. If you exit SpeedScript
by pressing the RESTORE key, type
POKE 53272,26 to restore the set
before you type RUN to reenter
SpeedScript.
When designing your custom
character set, remember that verh-
cal lines appear thinner and fuzzier
than horizontal lines. Notice that
every vertical line is doubled on the
normal Commodore character set,
making characters appear bold.
You'll probably want to follow the
same rule when designing your
own sets. This is not a problem wdth
crisp monochrome monitors. You
can use the full 8X8 resolution of
the character grid to design clean.
well-formed characters.
Another guideline for readabili-
ty is that uppercase characters are of
uniform height. All lowercase char-
acters are the same height, except
for tall characters such as b, d, f, h, i,
k, 1, and t, which are the same height
as uppercase letters. Normally you'll
keep the rightmost column and the
lowest row blank to keep characters
from running into each other and to
reserve room for the lowercase de-
scenders on the g, j, p, q, and y.
Naturally, an exception is when you
design cursive or script characters
that should link together.
You'll also want to customize
the punctuation marks and sym-
bols. SpeedScript uses the back-
arrow symbol as the carriage-return
mark. If you don't like to see return-
marks, just blank out that character.
You can put a tiny dot in the
SHIFT-SPACE character to distin-
guish it from a real space. It can also
be convenient to define some of the
graphics characters to their printing
equivalent on the printer. For ex-
ample, some graphics characters
print as italic or foreign -language
characters. Just edit the graphics
characters to look like their printing
equivalents.
You can also create your own
custom cursor. SpeedScript's cursor
just alternates between the normal
and reverse-video version of what-
ever character it's sitting on. The
last 128 characters of a character set
are the reverse-video ones. If you
want an underline cursor, just copy
the normal set down to the reverse-
video area and draw a line through
the bottom row of every character.
Special characters can even have a
unique cursor. ®
Best of COMPUTEl and Gazette 1 1 3
Mail Merge
For SpeedScript
This productivity booster lets you
produce personalized form letters by
merging a SpeedScript word process-
ing document with a file of names and
addresses. A disk drive and printer
are required.
Many word processors include a
powerful feature known as mail
merge, which allows you to create
personalized form letters. If you're
not familiar with a mail merge,
here's how it works. First you create
a file containing names and ad-
dresses (if you operate a business or
conduct lots of correspondence,
you probably have such a file al-
ready). Then you write a form letter
with the word processor, leaving
special markers in the places where
each person's name and address
will appear. To perform the mail
merge, you tell the word processor
which document and address file to
use. The program automatically
prints out a personalized letter for
each person in the file, filling in the
special blank spaces with each per-
son's name and address. Although
the technique is most often used to
print form letters, you can use the
same feature to merge any sort of
data into a standard form document.
SpeedScript doesn't have a mail
merge feature, but you can accom-
plish the same goal with this pro-
gram, "Mail Merge." With it, you
can create computer-generated mail
with a personal touch. You'll also be
relieved of much of the tedium of
preparing personalized letters for
your club, church, or business.
How To Use The Program
Before you can use Mail Merge, it's
necessary to understand some basic
Jerry Starling
facts about how it works. To pro-
duce personalized form letters.
Mail Merge reads two sequential
files. The first file is a document
created with SpeedScript and the
second is created by an address or
database program. I use a commer-
cial database program, but many
programs can do the job. If you
don't have a database program.
Mail Merge can also create the ad-
dress file (however, it does not have
the ability to edit an existing ad-
dress file). Another option is to use
SpeedScript itself to create the ad-
dress file: Simply type in the data
using the format described below;
then print the file to disk (note that
this file must be printed, not saved,
to disk). If you also save the address
file from SpeedScript (using a differ-
ent filename), you'll have the abili-
ty to edit the file.
The address file, of course,
contains several items of infor-
mation for each person. In database
terminology, the term record is used
to refer to each set of information
(one person's name, address, city,
state, zip code, and so on). Each
item within the record is called a
field. In a simple address file, the
first field in the record might con-
tain the person's salutation (Ms.,
Mr., Dr., or whatever); the second
field could contain the person's
name; the third, the person's street
address; and so forth.
Mail Merge expects the ad-
dress file to have a very simple
record and field structure. Each
field within the record ends with a
carriage return (character 13) and
the end of each record is marked
with an extra carriage return. For
instance, say that your address file
contains records consisting of a
name, address, and city for each
person. In each record, a single car-
riage return appears after the name
and address, while two carriage re-
turns appear after the city to mark
the end of the record. The complete
file consists of a number of these
records in sequence.
The form letter is written with
SpeedScript and printed (not saved)
to disk with SpeedScript's SHIFT-
CTRL-P command. If you have
some other file that creates sequen-
tial files, you can probably use
those files with Mail Merge, as well.
The form letter must include
special markers to show Mail
Merge where to insert information
from the address file. Each such
marker is a number within square
brackets ([ ]). When Mail Merge
finds a number in square brackets,
it reads a field from the address file.
The number inside the brackets
tells Mail Merge which field from
the current record to print at that
place in the form letter. Thus, at
various places in the letter you
might have the markers [1] and [3].
The marker [1] tells Mail Merge to
insert field 1 at that place in the
letter. The marker [3] tells the pro-
gram to insert field 3 at the place
where that marker appears. Note
that the markers can appear in any
order (marker [3] can appear before
or after marker [1], and so on) and
you can use the same marker as
often as you want. For instance,
you might want to print the per-
son's name at several different
places in the letter.
Another special indicator must
appear as the very first line in the
form letter. This marker tells Mail
Merge how many fields each record
contains. It consists of a left square
1 1 4 Best of COMPUTEl and Gazette
bracket followed by the number of
fields and a lowercase v character.
For example, this indicator tells
Mail Merge that each record in the
address file contains five fields:
[5v
Mail Merge ignores everything
in the document which appears
before this indicator, so it also serves
as a "start printing" command for
the program. Mail Merge stores this
value in a string array which it
DIMensions with 25 elements in
line 120. This means you can merge
an address file whose records con-
tain as many as 25 fields. To merge
files with more fields, increase the
value 25 In line 120 as needed.
A Walk Through
Here's a brief description of the
prompts you encounter when using
Mail Merge.
• Enter name of letter file. At this
prompt. Mail Merge expects you to
enter the name of the SpeedScripl
document (form letter) or other se-
quential form file which you previ-
ously printed to disk.
• Enter name of list file. Enter the
name of the address file. If you
have not already created an address
file, enter a new filename for the file
you are about to create.
• Create file or input from disk? Enter
C to create a new address file or I to
use a file that already exists. If you
use an existing file, you'll skip
ahead to the Enter dale prompt {see
below).
• How many variables per letter? This
prompt appears only when you are
creating a new address file. When it
creates the file. Mail Merge needs to
know how many fields (variables)
are contained in a record. Enter that
number (it should be the same as
the number in the indicator at the
beginning of the SpeedScript form
letter).
• Enter name for variable. This name
is used as a prompt while you are
entering address file data. It will be
repeated for each of the fields in the
record.
• Enter END when all entries are
entered. This is the data entry por-
tion of Mail Merge. The program
prompts you with the names you
entered in the last step, storing the
data you enter for the fields in each
Programming Notes
Here's a description of the various sections of Mail Merge.
Lines Notes
lOO-IIO Opening screen display; set maximum size for arrays for number document
lines and number variables in list file.
120 Dimension arrays; read data for date conversion routine.
130-160 Input file information.
170-270 Create list file (optional).
280-300 Date formatting.
330-380 Read number of variables list file will contain.
390-500 Read document from; flag lines containing variables.
510-530 Select continuous or single sheet paper feed.
540-550 Request list file disk.
560 Open list file and printer.
570 Read a variable set from the list file; initialize the document line counter.
580 Check for a variable flag in the document line,
590 If no variable is found, print the line as is.
600-690 If a variable is found in the document line, insert variables and print the line,
700 Update document line counter; process next line.
710-720 End of document routine (entered from line 600), Eject page or wait for new
sheet. Check for end of job. If not at end of job, read next variable set for
next list file.
770-780 Wail for RETURN from keyboard,
790-810 Check for errors in input.
820-840 Data for date conversion routine.
850-880 Input list file variable set and print to screen.
890-910 Break down date elements from M/D/Y format.
920-980 Error message for improper document preparation.
record. When you've finished enter-
ing all the data, enter END to termi-
nate this section of the program.
• Enter date for letter (M/D/Y)? Mail
Merge can insert a date wherever
the form letter has the special indi-
cator [date]. You must always enter
a date, even if your form letter
doesn't use it. Enter the date in the
format M/D/Y. The year can be
entered as either two digits or four
digits. If you enter two digits. Mail
Merge adds 19 in front of the digits
you enter. For example, the year
1986 can be entered as either 86 or
1986. The month and day can be
entered as either one or two digits.
Enter 2 for the month of February,
12 for December, and so on. When
it prints the letter. Mail Merge con-
verts that date to the usual written
format (December 24, 1986). The
year can be entered as two digits
(which assumes 19nn), or as four
digits. The date is checked for valid-
ity, but February 29 is not consid-
ered a valid date by Mail Merge.
• Press RETURN when ready to input
letter. This prompt indicates that
Mail Merge is ready to store the
form letter in memory. Insert the
disk containing the form-letter file
and press RETURN. Mail Merge
reads the document, examining
each line for special Mail Merge
markers. As it reads each line. Mail
Merge prints a period (.) on the
screen. This process takes longer
than simply loading the document,
so be patient.
• Continuous form or single sheet
feed? Mail Merge gives you the op-
tion of using continuous form (fan-
fold) paper or feeding sheets in one
at a time. Press C for continuous
form or S for single sheet paper.
Note that letters which exceed one
page in length cannot be used with
the single sheet option, since Mail
Merge makes no provision for
pausing except at the end of the
document.
• Press RETURN when ready to begin
printing. At this point Mail Merge is
ready to print the final letters. Insert
the disk containing the address file
and make sure the printer is turned
on. When the system is ready to
print, press RETURN. Mail Merge
proceeds to print a letter for each
record in the address file.
• Press RETURN when ready. This
prompt appears only if you select
the single sheet paper opfion. It
alerts you when it's time to insert
each new sheet of paper.
• End of Job. Mail Merge has finished
printing all the letters. ®
Best of COMPUTEI and Gazette 1 15
ScriptSave
Automatic Disk Saves
For Commodore 64
SpeedScript 3.0
Have you ever watched your com-
puter suddenly blink off due to an
unexpected power failure, and then
realized that you haven't saved your
text for an hour ormore? All that work
down the drain. But with "Script-
Save" these accidents won't be quite
so disastrous. The machine language
program is designed to work with a
Commodore 64, a disk drive, and the
SpeedScript word processor.
While you are working with a com-
puter, you're tethered to a lifeline.
That lifehne is the computer's power
cord. If the lifeline is disconnected or
interrupted for even a brief moment,
your computer suffers an attack of
amnesia. Random Access Memory
(RAM) chips need a constant flow of
electricity to maintain their infor-
mation— the information you put
into the computer. Usually a power
failure does not damage the com-
puter, but it does obliterate the pro-
gram or text you were working on.
Luckily, most people live in
areas with reliable power sources.
However, electrical service in some
locales is subject to frequent inter-
ruptions. And sometimes your way-
ward foot, a passer-by, a small
child, or even a pet can accidentally
knock a power cord loose. A split-
second is all it takes for the com-
puter to forget.
Unfortunately, the writer is
often forgetful, too. To protect your-
self against power interruptions,
you should periodically save your
work on disk. But when you're
J. Blake Lombert
working intensely, it's easy to forget
this important duty. If the power
does fail, you can generally remem-
ber where you left off, but it's often
impossible to remember how you
got there. Even if you frequently
rewrite your documents, losing any
of the intermediate versions inter-
feres with the creative process.
An Extra Rope
"ScriptSave" is the solution. Script-
Save is a short (less than 256-byte)
utility that ties into the Commodore
64 version of SpeedScript 3.0. Every
ten minutes, it waits for you to fin-
ish the paragraph you're working
on, and then automatically saves
your text (except for the final return
character) on disk with a special
filename. That way, if a power fail-
ure unexpectedly strikes, you can
later recover all but the last few
minutes of your work.
ScriptSave is a BASIC loader
and boot program: It loads and exe-
cutes both the machine language
automatic-save routine and Speed-
Script 3.0. Make sure both programs
are on the same disk, and change
the filename in line 30 of Script-
Save to the filename for SpeedScript
3.0 as stored on your disk. General-
ly, it is best to start with a blank
disk and place ScriptSave on the
disk first. This way, you can use
LOAD"*",8: followed by SHIFT-
RUN/STOP to boot up for a writ-
ing session.
Once you load and run Script-
Save, this prompt should appear:
File:
Type in a legal Commodore
filename, but limit it to 14 charac-
ters or less. Press RETURN. Script-
Save automatically loads and runs
SpeedScript 3.0. Now you can start
writing and stop worrying about
periodic saves.
When ScriptSave stores your
work, it precedes the filename you
specified with a two-digit version
number. For example, if you choose
the filename ARTICLE, the first
version will be called OlARTICLE,
the second version 02ARTICLE,
and so on.
Of course, you can still save
manually anytime you wish. Speed-
Script 3.0 functions normally except
for one detail — it assumes that all
your saves are on disk. You no
longer have to press T or D to speci-
fy Tape or Disk after selecting the f8
SAVE option.
Additional Notes
When you finish writing, you will
probably want to save a final ver-
sion of your text. Later, if you want
to scratch the intermediate versions
off your disk, there's a quick meth-
od using SpeedScript's disk com-
mands. First, press CTRL-TI. When
SpeedScript prompts Disk Com-
mand:, type s:??article and press
RETURN (substitute for article the
filename you specified in Script-
Save).
There's another trick you can
use to give yourself more time be-
tween saves or to force an early
save. Since ScriptSave uses the in-
ternal time-of-day clock, you can
1 16 Best of COMPUTE! and Gazette
BBV5
II .. r f -/ ./ sm V K t < J
II " ^ »» I '-I w i » if i if J _
^■■■■■■■■■■1
S ■■■■■■■!
■■■■■■■I
■■■■■■■■■■r
'T II J ~ll JB . jr i
A ' ^ mmi IB
I
r A
1
1BI
ABACUS SOFTWARE
ADA Tiaining Course S25 95
Anatomy of ihe 1541 « C-64 ea 9,95
Assembler Moniiw 25.95
Basic Compilei 25.95
Basic 128 39,95
Cadpak 25.95
Cadpakl28 39.95
Chanpak 64 w 128 ea. 25.95
CobcH 25.95
Cobol 128 39.95
Forth Language , , 25 95
Peisonal PorKolio Managet 25,95
Pcisonal Portolia Manager-128 . , . 39.95
Super C64of 12B ea, 3995
Supef Pascal 54 oi 128 , , , ea. 39,95
TAS64o<128 ea. 39.95
XREF 64 or 128 ea, 14 00
ACCESS
Leadei Boaid $25.95
LB. Tournament (1 , . , 12,95
Woild Class LB 25,95
W.C Famous Couises »1 12,95
Mach5 2295
Mach 128 32.95
Triple Pack , , 12 95
I Oih Fiamo Bowling 25.95
Echelon . 26.95
ACCOUVDE
Ace ol Aces, 519,95
Decepitx 9,95
Desert FoK 9,95
Fighi Nighl 19,95
Hardball. 19.95
PSI 5 Trading Company 19,95
ACTIONSOFT
Thundef Chopper S19.95
Up Periscope 19.95
ACTIVISION
Aliens ,S23 49
Gamemakw 26 49
Gamemakei Libraty Disks
Sports 13.49
Science 13.49
Ghost Ijusiers 9 95
Hackur 9 95
Liiile Computer People 9 95
Murder on Ihe Uississppi 23 49
Music Sludio 19,95
Poiidl 26,49
Tass Timps 1995
BERKELEY SOHWORKS
G60S .S39,95
GEOS 128 49,00
Desk Pak I 23.95
Desk Pak II 33.95
Font Pak 1 19.95
GEO Calc 33.95
GEO Chart 26.49
GEO Dex 26 49
GEO File , , , . . 33.95
Wriler's Woikshop 33.95
BASEMENT BOYS
Past Hackem S29 00
BRQDERBUND SOFTWARE
Carmen Sandicgo U.S. A, S29 95
Caimen Sandiego Wotk) 23.49
Karateka 19.95
Print Shop 29.95
Print Shop Companion 23.49
P,S. Graphics Libraty I. M Of III ea. 16.95
Toy Shop 39.95
Svncate 33.95
SvTcalc Tempiaies 13.49
Holiday PS. Graphics 16,95
CENTRAL POINT
Copy II 64.128
S29.00
CAPCQM
Ghosts n Goblms $19 95
Gunsnioke 19 95
Troian 19.95
1942 19.95
DATA EAST
Break Thru $23 49
Ikaii Warrior 23,49
Karate Champ , 13 49
Kung Fu Masier 13 49
Tag Team Wrestling 23 49
DAVIDSON
Alge Blaster .
Spell It
Word Attack
Math Blaster
33.95
33,95
33.95
3395
DIGITAL SOLUTIONS. INC.
Super Pack II , . . 65.95
Pocket Filer II 39 95
Pockei Planner II 39.95
Pocker Writer II 39,95
Pockei Dictionary 9.95
ELECTRONIC ARTS
Altemalc Reality "The Dungeon" . . , , . $26.49
Arctic Fo" , 23.49
Auio Duel 33,95
Bards Tale 27.95
Bard's Tale II 27 95
Hint Book Bard's Tale I or II ea, 9.95
Chessm aster 2000 , 27,95
Dan Dare 14,49
Earth Orbit Station 20 95
Legacy o( the Ar>cieni8 20 95
Marble Madrvess 20,95
Moebius ' 27,95
Movie Maker 10.95
One on One 10.95
Touchdouvn Football 10.95
Ullima IV 42.00
EPYX
Championship Wrestling $2649
Create A Calendar 19.95
Temple ol Apshai Trilogy 13.49
Street Sports Baseball 2549
Street Sports Basketball 26 49
Sub Battle , , 26.49
Winter GamsB 26 49
World Games 26 49
FIREBIRD
Elite .... S22.95
Golden Palh 26.49
Sentry 26.49
Statglidei 26.49
Ttackec 26.49
Pawn 29,95
S*^ ABBY'S SUPER BUYS ^i
INFOCOM
COMMODORE
& MASTERTRONICS
Buy Four - Get One FREE
Zork II $4.99
Zofk Ml 4.99
Suspended 4,99
Starcross 4,99
Deadline 4.99
Captive 4.99
Big Mac 4.99
Finders Keepers 4,99
Vegas Jackpot 4.99
Golden Talisman 4.99
Quest For Holy Grail 4.99
1985 -The
Day After 4.99
Ant Attack 4.99
Challenger 4.99
Spooks 4.99
GAMESTAR
Championship Baseball SI 9.95
G,F,l Football 23.49
On Court Tennis 19,95
Star Rank Bomng 19.95
GBA Championship Basketball 23.49
H&P
Final Cartridge , $44 95
MICROPROSE
Conflict in Viemam $28.49
F 15 Strike Eagle 23 49
Gunship 23.49
Sileni Service 23 49
Top Gunner Senes 16 49
Stealth Fighter CALL
Pirates 26.49
MINDSCAPE
American Challenge , , S1995
Bop 'n Wrestle 19.95
Delendet of the Crown 23 49
Fist 19 95
Indoor Sports 1995
fnliltrator 19 95
Super Slat Hockey 23.49
Trail Blazer 19 95
ROGER WAGNER
Merhn 64 S33.95
Merlin 128 48.00
SPRINGBOARD
Ceililicale Maker S33 95
CM. Library "1 23 49
Oip Art Vol (1 Of 3 u, 19.95
ClipArtVol (2 2649
Graphics Eipander 23.49
Newsroom . 33.95
SSI
B24 (26.49
Battlec'uiser , , 39,95
Kamplgruppe 39 95
Phaniasie IN 26 49
Piesiileni Elecl '88 1649
Rualms ot Darkness 26,49
Ri^bel Charge. Chickamauga 33 95
War in the Soulh Pacilic 39,95
SUBLOGIC
Jel 29 00
Flight SimulaiDi It , 35.95
F S Scenery Disk 1-7 ea. 14 50
Star Scenery San Francisco 14 50
Star Scenery Japan 14,50
Western Scenery Disk Pock ...... 74 95
TIMEWDRKS
Partner S39 95
Sideways 1995
Swilicalc miSideways 26.49
Word Wtiter III , 33.95
Data Manager 128 , , 49.00
UNICORN
Decimal Dungeon , ,S1995
Fraction Action 19 95
Percentage Panic 1995
Ship Ahoy 19,95
Ten Utile Robots 19.95
XETEC. INC
Fonimastet II S33 95
Fonimastet 128 39 95
WE CARRY A FULL LINE OF SOFTWARE tt ACCESSORIES - PLEASE CALL
ACCESSORIES
VIC 1 750 Expansion CALL
VIC 1 754 Enpanaon , . , CALL
VIC 1351 Mouse CALL
Awatex Modems CALL
Xetec Super Graphics $59 00
Xetec Super Graphics Ji 35,95
Wico Boss Joyslick 15.00
Epv 500XJ Joystick 15 00
Disk Notchets 4,50
NASHUA DISKS
0SJDD5%"WtthSleaves
Pc-f Hundred S 39
Per Thousand S325
RIBBONS
Commodore 1 525 $7,50
Commodore 1626'802 7.00
Commodore MPS 801 7,50
Commodore MPS 803 9.00
Epson MX.'FX.'RX 80 ea. 5.00
Panasonic lOSOn 091 ;i 092 . . . ,ea. 8,50
Slat Gemini Black 2.50
Siar Gemini Cotoi" 3,50
■Rease State Choice of Color
Stan NX-10, NPIO, NLIO ea, 8.00
Okimaie 120 6.50
Okimate 10/20 Black 4.50
Okimate 10'20 Color 5 00
DUST COVERS
C 128 Computet . , . S7.00
Vic 20'64 Computet 7.00
1571 Disk Dnye 7.00
1641 Disk Drive 7,00
1 525 Ptiniet , 9.00
1526 Printer 9.00
MPS lOOOWot W/0
Tractor ea, 9.00
MPS 801 (802 Printer ea, 9.00
MPS 803 W ot W(0
Ttaclot ea. 7,00
Amiga Computer 9,00
Amiga Keyboarrt S 6 50
BOOKS I
1541 Repair & Maintenance S15.O0 ■
Anatomy of Ihe C 64 , 15.00 B
Anatomy of Ihe 1541 15,00 J
GEOS Inside & Oul 15.00 |
GEOS Tricks & Tips 15.00 |
Peeks & Polies lot ihe C-64 12,00 ■
Tricks & Tips for the C-64 15.00 5
1571 Iniernals 15,00 ■
C 128 Basrc 7,0 Internes 18,95 |
C-128 Tricksa Tips 15.00 |
Peeks & Pokes for C 128 12,50 ■
C 128 CP;M User's Guide . 1500 B
C 128 Internals 1500 B
ALL TITLES ON DISK UNLESS MARKED (R) FOR ROM CARTRIDGE & (C) FOR CASSETTE TAPE
Order Line WE CHECK FOR STOLEN CHARGE CARDS Customer Service
1-800-282-0333 . n ^ Ohio Residents
ORDERS ONLY- Sales Personnel Do ^'^ ^° ^"^'^ P*"' ^^^ '^^'^ " 1-513-879-9699
Not Have Information on 37 s. Bfoad Street, Fairbom, OH 45324 r-'^
Previous Orders or Product Specs. ' ' ImoucCi
^~_| SOFTWAR€ ONLV Prepaid orders over »50 receive Iree shipping via UPS in continental U,S, Please add $2 o-ders under «50. HARDWARE and all ^^j
cOl °"^^" requiring shipment via U,S, Post Office are subject to additional freight charges, CQ.D. orders under $100,00 accepted add S5, Charge card I
Sjt**l orders add S2 service charge. Ohio residents add 6% sales tax. Personal checks require a three week wailing period. No waiting when paid by credit
card, certified check or money order. All items subject to availability and (irice ch.ingc PLEASE CITE AD NUMBER WHEN ORDERING AIL RETURNS
MUST BE ACCOMPANIED BY AN AUTHORIZATION NUMBER ■ I.MII.i ■ < j 1 ■
exit SpeedScript 3.0 by tapping RE-
STORE and pressing the Y key, and
then POKE 56330,0 to reset the
timer and delay the save. Or you
can POKE 56330,16 to set the timer
for an immediate save, which will
be activated the next time you press
RETURN while in SpeedScript. You
can toggle ScriptSave off and on by
entering SYS 52993. Each time
ScriptSave is toggled on, it resets
the version number to 01 and
prompts you to enter a new file-
name. All of these commands (ex-
cept for toggling ScriptSave on)
should be followed by RUN to re-
enter SpeedScript. One caution,
however: While these manipula-
tions are usually safe, there is a
chance that exiting and reentering
SpeedScript will erase your text. ©
SpeedView
An 80-Column Preview Program
For SpeedScript
"SpeedView," an enhancement for
compute's Commodore 64 Speed-
Script word processor (versions 3.C
and higher), provides 80-column pre-
viewing of text before the actual
printing. Using 4 X 3 high-resolution
blocks, the program shows exactly
how each page of the document will
look when printed.
SpeedScript, COMPUTEI's popular
word processor, becomes an even
more useful resource with this pro-
gram. "SpeedView" lets you pre-
view your text file in 80 columns so
you can see precisely how a print-
out of your document will look.
To use SpeedView, load Speed-
Script but do not run it yet. Next,
load SpeedView with the command
LOAD"SPEEDVIEW",8,l. Finally,
type SYS 9480 and press RETURN.
This command activates Speed-
Script with the SpeedView
enhancement.
Two For One
If you plan to use SpeedView regu-
larly, you have the option of creat-
ing a combined file which contains
both SpeedScript and SpeedView.
Like SpeedScript, the unified file
loads and runs just like an ordinary
BASIC program. To create this file,
reset the computer by turning it ofl
and on; then enter this command
Mark Schreiner
and press RETURN:
POKE 44,48:POKE 48'256,0:NEW
Load SpeedView. Unify into
memory and insert a disk containing
copies of both SpeedScript and
SpeedView. When you run Speed-
View.Unify, it asks you to enter the
names of the SpeedScript and Speed-
View files on the disk in the drive.
After you've entered these file-
names, you are prompted to enter a
name for the new, combined file.
Speed view. Unify reads both files
into memory, modifies the BASIC
portion of SpeedScript, then writes
the unified package back to disk
using the filename you selected.
To use this combined program,
load and run it as you would any
BASIC program. You now have a
copy of SpeedScript with Speed-
View permanently installed.
SpeedView Operation
To use SpeedView, press CTRL-
SHIFT-P, followed by S, the com-
mand sequence to direct Speed-
Script's output to the screen.
Instead of the usual jumble of
scrolling lines, SpeedView presents
a neatly formatted representation
of the document's first page. Press
RETURN to view succeeding pages.
SpeedView shows exactly how
each page will look when printed
on paper. When the last page has
been displayed, press any key to
return to SpeedScript. The screen
preview option is the only Speed-
Script command changed by Speed-
View. All others function normally.
You should never press RE-
STORE while previewing a docu-
ment with SpeedView. If you must
exit SpeedScript, press RETURN un-
til you have reached the end of the
SpeedView display and return to
SpeedScript; then press RESTORE
to exit. If you do not use the com-
bined file, remember that the prop-
er sequence is to load SpeedScript,
load SpeedView, then activate
SpeedView with the SYS command
described above.
Some printkey values may not
show up during the 80-column pre-
view. SpeedView displays only
those characters whose Commo-
dore ASCII values are in the range
of 32-90, or 193-218, inclusive.
This includes the upper and lower-
case alphabets, numerals, and
punctuation marks. The Speed-
View program code occupies 1.5K
of space that's otherwise available
for text memory. As a result, you
may not be able to preview a very
long document without breaking it
into two smaller files. SpeedView
behaves erratically if you change
the page length to any value other
than 66, or the right margin to any
value greater than 80. To obtain the
best results, make sure to use those
settings. ©
1 1 8 Best of COMPUTEI and Gazette
SpeedCalc
For Commodore 64 And 1 28
Written completely in high-speed ma-
chine language, SpeedCalc has all
the important features you'd expect
from a commercial spreadsheet pro-
gram. In addition, its data files can be
merged into text files created with the
SpeedScript 3.2 word processor.
Have you ever planned a budget for
your home or office? If so, you
probably used some sort of work-
sheet divided into rows and col-
umns. Perhaps you wrote the
months of the year along the top of
the sheet and listed categories for
earnings and expenses along one
side. After entering data for each
category and month of the year,
you could calculate total income
figures by adding or subtracting
numbers in each of the sheet's
"cells."
That's a classic example of a
worksheet. It lets you enter and
organize data, then perform calcu-
lations that produce new infor-
mation. A spreadsheet program is an
electronic version of the familiar
paper worksheet. Since it does all
the calculations for you at lightning
speed, an electronic spreadsheet is
far more convenient than its paper
counterpart. And spreadsheet pro-
grams also offer built-in editing fea-
tures that let you enter and
manipulate large amounts of data
with a minimum of effort.
SpeedCalc is an all machine
language spreadsheet program for
the Commodore 64. Though rela-
tively compact in size, it's fast and
easy to use, and has many of the
features found in commercial
spreadsheet programs. Even better,
the "SpeedScript Integrator" pro-
Kevin Martin
gram (also included here) lets you
merge your SpeedCalc files into
word processing documents creat-
ed with SpeedScript, COMPUTEI's
popular word processor. Working
together, SpeedCalc and SpeedScript
make a powerful team. You can
merge a chart of sales figures into a
company report, create a table of
scientific data for a term paper, and
manipulate numeric information in
many other ways. In a sense, a
spreadsheet program brings to
arithmetic all of the flexibility and
power that a word processor brings
to writing.
The SpeedCalc Screen
To use the program, simply enter
LOAD"SPEEDCALC",8, then type
RUN.
SpeedCalc uses the top line of the
screen as the command line. This is
where SpeedCalc displays messages
and asks you questions.
Screen lines 2-4 are the input
buffer area. This is the work area
where you enter and edit data. As
you'll see in a moment, the input
buffer also displays the data con-
tained in the current cell.
The lower 21 screen lines are
your window into the spreadsheet.
Though the spreadsheet contains
many rows and columns, only a
few can fit on the screen at one
time. By scrolling the screen back
and forth with the cursor, you can
move the display window to any
part of the spreadsheet.
The SpeedCalc worksheet con-
sists of 50 vertical columns labeled
with letters (AA, AB ... BX) and 200
horizontal rows numbered from
1-200. The rectangle where a row
and column intersect is called a cell.
Cells are where you store data.
With 50 columns and 200 rows, the
SpeedCalc spreadsheet has a maxi-
mum of 10,000 (50*200) cells. Due
to memory limitations, however,
only about a third of these can actu-
ally contain data. But you may
spread out the data over all 10,000
cells if necessary, depending on
what format you need.
If you don't like the spread-
sheet's screen colors, they're easily
changed with the special function
keys. Press the fl key to cycle
through the 16 border colors unhl
you find one you like. The f3 key
changes the background color and
f5 changes the character color.
Moving The Cursor
Each cell is identified with the let-
ters of its column and the number
of its row. For example, the cell at
the extreme upper-left comer of the
sheet is called AAl, since it's in
column AA and row 1. The cell
below that is AA2. Moving one cell
to the right from AA2 puts you in
cell AB2, and so on. (For the sake of
clarity, this article uses uppercase
letters for cell names. Note, howev-
er, that you must use lowercase let-
ters such as aal when entering cell
names within SpeedCalc.)
Your current position in the
spreadsheet is shown by the high-
lighted cursor. The simplest way to
move around the sheet is with the
cursor keys, which work just as
they do in BASIC. Another way to
move the cursor is with the HOME
key (press CLR/HOME without
pressing SHIFT). Press HOME once
to "home" the cursor on the current
screen: The cursor moves to the
upper-left cell. Press HOME twice
in succession to move the cursor to
cell AAl, the home position for the
entire sheet.
SpeedCalc also has a goto com-
Best of COMPUTE! and Gazette 1 19
mand for moving over long dis-
tances. Press CTRL-G (hold down
CTRL and press G). The command
line turns blue and displays GOTO:
followed by an underline cursor.
The underline cursor generally in-
dicates that SpeedCalc is waiting for
data — in this case it expects the
name of the cell where you wish to
go. If you enter bal88 at this point,
SpeedCalc moves the cursor to cell
BA188, adjusting the screen win-
dow as needed. Take a few mo-
ments to practice moving around
the spreadsheet with all three meth-
ods; You'll be using them a lot. In a
later section, we'll discuss how to
change the size and format of a cell.
Keyboard Commands
SpeedCalc offers many different
commands, a few of which are en-
tered by pressing one key. How-
ever, most commands are entered
by pressing CTRL along with an-
other key. CTRL-G, as you've seen,
is the goto command. CTRL-A dis-
plays the amount of free memory
available, and so on. The most dras-
tic command is CTRL-X, which ex-
its SpeedCalc and returns you to
BASIC. Since leaving the program
effectively erases all data in memo-
ry, SpeedCalc prompts you with
ARE YOU SURE Y/N? before it
shuts down. To cancel the com-
mand, simply type N and press
RETURN.
A few commands require you
to press three keys at once. This
sounds more awkward than it is in
practice, since two of the three keys
are SHIFT and CTRL. For instance,
the recalculate command is per-
formed by pressing SHIFT-CTRL-R
(hold down SHIFT and CTRL, then
press R). The accompanying table
lists all the SpeedCalc commands.
We'll be discussing each command
in more detail below.
Three Data Types
Before entering any data, you must
know what kind of data SpeedCalc
accepts. There are three different
types: numbers, text, and formulas.
Let's look at each type in turn:
1. Numeric data consists of num-
bers— the basic stuff that spread-
sheets work with. SpeedCalc has a
few simple rules for numeric data:
A number must be a decimal value
(base 10, not hexadecimal) com-
posed of one or more digits from
0-9, with an optional plus or minus
sign. A decimal point is also option-
al. If you include any other charac-
ters in numeric input, SpeedCalc
treats the entire input as text data
(as explained below). Thus, the
numbers 123, .001, and -65535
are valid numeric data. The num-
bers 65,535 (which includes a com-
ma) and 358E6 (scientific notation)
are not.
For example, let's enter the
number 123 in cell AAl. No special
commands are required to enter
data: Just move the cursor to AAl
and begin typing. While you're en-
tering the number, it appears only
in the input buffer near the top of
the screen. As soon as you press
RETURN, the number appears in
AAl and the letter N appears at the
upper right of the screen. The N
signifies numeric, meaning that
SpeedCalc has accepted the entry as
valid numeric data. Move the cur-
sor to a vacant cell, then move it
back to AAl. The input buffer dis-
plays whatever data is found in the
cell under the cursor. When the cur-
rent cell is empty, the buffer is emp-
ty as well.
As you can see, pressing RE-
TURN enters a data item into the
current cell. You can also end the
input by pressing a cursor key. The
data is entered as if you had pressed
RETURN, and the cursor moves in
the indicated direction. This feature
is handy for entering a lot of data:
Simply type the entry, move the
cursor to the next cell, enter more
data, and so on.
2. Text data is not "data" in the
strict sense, since SpeedCalc doesn't
use it in calculations as it does num-
bers and formulas. Text data is
there only to help humans under-
stand what the other data means.
Text may consist of comments, ti-
tles, column headings, subhead-
ings, or whatever you need to
interpret the numbers and formu-
las. As an example, move the cursor
to cell AA2 (just under AAl) and
type the following line. Note that
both uppercase and lowercase let-
ters are acceptable:
This is a piece of text data.
You can use the DEL key to
erase mistakes while you're typing.
When you press RETURN, Speed-
Calc displays T (for text) in the
upper-right comer. In this example,
the cell isn't long enough to accept
all the text, so only the leftmost
portion appears in AA2. But even
though you can't see it, all of the
text is there. Move the cursor to
another cell, then move it back to
AA2. As soon as you return to AA2,
SpeedCalc displays all the text in the
input buffer.
3. Formula data is a mathematical
expression or formula. It may be as
simple as 2-1-2 or as complex as
your imagination (and mathemati-
cal prowess) allows. The first char-
acter in a formula must always be
an equal sign ( = ). If you omit this
symbol, SpeedCalc either signals an
error or treats the data as text. The
true power of a spreadsheet is that a
formula in one cell can refer to an-
other cell. This is easier to demon-
strate than to explain. Move the
cursor to cell AA3 and type the
following line:
= aal '25.01 + @sqr(4)
As soon as you press RETURN,
SpeedCalc displays F (for formula)
in the upper-right comer and puts
the result of the formula (not the
formula itself) in AA3. If AAl con-
tains 123, the value 3078.23 ap-
pears in AA3. In plain English, this
formula means "multiply the con-
tents of cell AAl by 25.01 and add
the square root of 4." Before we
examine the formula more closely,
here's a quick demonstration of
what makes a spreadsheet such a
powerful tool. Move the cursor
back to AAl and press CTRL-R.
The command line displays the
message RECALCULATION IS
ON, meaning SpeedCalc now auto-
matically recalculates the entire
sheet whenever you make a
change. Now change the number in
AAl to 456 (simply move to the cell
and start typing). The new result
(1 1406.53) automatically appears in
cell AA3. We'll explain more about
automatic recalculation later.
When you enter the name of
another cell in a formula, the letters
must be lowercase (enter aal, not
AAl). The referenced cell must
contain data that SpeedCalc can
evaluate: a number or another for-
mula. If the formula refers to an
empty cell, or one that contains
text, SpeedCalc signals an error.
1 20 Best of COMPUTE! and Gazette
Mathematical Operators
These symbols can be used as oper-
ators in a formula:
operator
+
t1 (up arrow)
Function
addition
subtraction
multiplication
division
exponentiation
equality
One factor that affects formulas
is precedence, or the order in which
operations are performed. In Speed-
Calc, formula operators have the
same precedence as in ordinary
math (BASIC, as you may know,
uses a somewhat different prece-
dence).
The first operators to be evalu-
ated— those with the highest prece-
dence— are those enclosed in
parentheses. Where one set of pa-
rentheses encloses another, the ex-
pression in the innermost set is
evaluated first. The next operators
to be evaluated are exponents. Mul-
tiplication and division have equal
precedence; both operations are
lower than exponentiation. Addi-
tion and subtraction have the low-
est precedence of all. To take one
example, SpeedCak evaluates the
formula =5*(8-|-3*-2)n2-10/ + 2
as the value 15, just as in ordinary
math. Note how the result is affect-
ed by the plus and minus signs
before the two 2s,
Functions
Formulas may also include any of
the functions listed here:
@ab9( )
absolute value
@atn( )
arctangent
@ave( )
average of a block of cells
@cos( )
cosine
@exp( )
value of e (2.7182318...)
@int( )
integer
@log()
natural logarithm
@sgn()
sign
@sin( )
sine
@sqr()
square root
@sum( )
sum of a block of cells
@taii()
tangent
P»
value of pi (3.14159265)
All the functions except pi be-
gin with the @ symbol and are
followed by parentheses. Within
the parentheses of a function you
may use a number or formula. For
example, the formula =@sqr(4)
generates the square root of 4. The
formula =@sqr{aal) returns the
square root of whatever value cell
AAl contains. Note that the argu-
ment (value within parentheses) of
the functions @tan( ), @sin( ) and
(g)cos( ) must be expressed in radi-
ans; the result of the function
(a)arc( ) is expressed in radians. The
function @int( ) generates an inte-
ger (whole number) by truncating
(discarding the fractional part oO a
numeric value; note that this is dif-
ferent from rounding.
The function @ave( ) calcu-
lates the average of the values in a
block (group) of cells. The function
(^sum() calculates the sum of a
block. Both functions require that
you define the block so that Speed-
Cak knows which cells to include
in the calculation. This is done by
putting two cell names separated
by a colon in the parentheses. The
first cell name defines the upper-
left comer of the block, and the
second defines the bottom-right
corner. For instance, @ave(aal:
ad20) calculates the average of all
the cells from AAl to AD20. The
function @sum(aal:ad20) calcu-
lates the sum of AAl through
AD20, and so on. An error results if
any cell in the block is blank or
contains text data.
Editing The Sheet
Editing is a very important spread-
sheet function. The simplest way to
change what a cell contains is to
move to it and start typing. The old
data in that cell is replaced by what-
ever you enter. For instance, to re-
place the contents of cell AAl with
the number 456, move to that cell,
type 456, and press RETURN or exit
with a cursor key. Press CTRL-B
(think of blank) to erase what's in the
current cell. You can also clear a cell
by typing a space and pressing RE-
TURN. To erase everything in the
sheet, press SHIFT-CLR/ HOME.
Before carrying out this drastic oper-
ation, SpeedCak asks you to confirm
it by pressing Y or N.
In some cases, only a minor
change is needed. Edit mode lets
you change the data in a cell with-
out retyping the entire entry. To
activate edit mode, move to the de-
sired cell and press CTRL-E. In this
mode, the up/down cursor key is
disabled, and the left/right cursor
key moves v^^thin the input buffer.
Erase unwanted characters with the
DEL key. Typing in edit mode in-
serts new characters in the line: Ev-
erything to the right of the new
character moves right one space
(unless the buffer is already full).
Since the cursor keys have a differ-
ent function in edit mode, you can-
not use them to end the input. Press
RETURN to enter the new data and
escape from edit mode.
As you may have learned al-
ready, SpeedCak displays *ERROR*
in a cell when you enter an errone-
ous formula. The usual cause is that
you have made a typing error in
that cell, or the formula refers to
text or an empty cell. A line of
asterisks (**♦•**♦**) signals that a
number is too large to be printed in
the cell. Though these messages ap-
pear in the cell area, no data is lost.
You may move to the affected cell,
view its contents in the input buffer
and make whatever correction is
needed.
Recalcuiation
This feature is the very core of
SpeedCak. As you know, entering
or editing a piece of data causes
SpeedCak to perform a calculation
and put the result in the cell under
the cursor. In most cases, the new
data relates to data in other cells, so
you'll ultimately want to recalcu-
late the entire spreadsheet as well.
This can be done in two different
ways: manually or automatically.
To recalculate the spreadsheet
manually, press the back arrow key
(•-, at upper-left on the keyboard).
SpeedCak begins at AAl and recal-
culates every cell that contains data,
placing fresh results wherever
needed. If you switch to automatic
recalculation mode, SpeedCak auto-
matically recalculates the entire
spreadsheet each time you enter
new data or edit what exists. When
you press CTRL-R, SpeedCalc
changes the recalculation status
and displays it at the top of the
screen. If automatic recalculation
was turned off before, it is now on
(and vice versa). If you aren't sure
which mode you're in, press
SHIFT-CTRL-R; SpeedCak displays
the recalculation mode without
changing it.
Automatic recalculation can be
fun to watch in a large spreadsheet:
Every time you make a change,
new results ripple all the way down
the screen. However, the more data
your spreadsheet contains, the
Best of COMPUTE! and Gazette 1 21
longer it takes to update the entire
sheet. For this reason, you may
want to turn automatic recalcula-
tion off most of the time, recalculat-
ing with the back arrow key
whenever you need to view results.
One problem with recalcula-
tion arises from the order in which
cells are calculated. Because only
one cell can be calculated at a time,
you must sometimes recalculate the
entire spreadsheet two or three
times to get correct results in every
cell (this is common to all spread-
sheet programs). For instance, say
you have a formula in AAl which
refers to a formula in AB15. When
SpeedCalc calculates AAl, it must
use the existing data from AB15 —
which is probably out of date, since
the formula in AB15 hasn't been
recalculated yet. To avoid this prob-
lem, you should always press the
back arrow key two or three times
before printing a spreadsheet or
saving it to disk.
SpeedCalc offers a number of
other features. Before experiment-
ing with them, you should spend
some time typing in a hypothetical
spreadsheet — perhaps a fictitious
yearly budget — to become thor-
oughly familiar with the basic com-
mands covered so far. Most
importantly, create formulas, using
all the operators in different combi-
nations. Try doing things that you
know will cause errors. Then cor-
rect the errors in edit mode, and so
on. It takes a thorough grasp of the
fundamentals to get the most out of
SpeedCalc's advanced features.
Change Type And Format
The default (normal) format for nu-
meric data is flush right with
rounding to two decimal places. In
other words, the number is dis-
played in the rightmost part of the
cell, with two numbers after the
decimal point. Text and formulas
are flushed left (shown in the left-
most part of the cell). SpeedCalc
offers several commands for chang-
ing cell formats.
Change Type (CTRL-T). As noted
earlier, SpeedCalc displays a T, N, or
F in the upper-right comer of the
screen to show the data type of the
current cell. Occasionally you may
need to change a cell's data type.
Press CTRL-T for the change type
command: SpeedCalc displays the
question CHANGE TO: TEXT, NU-
MERIC, FORMULA? in the com-
mand line. To change the data type,
press T, N, or F. Be careful not to
create new errors when doing this.
Change Format (CTRL-F). This
command changes the location of
data in the cell and the number of
decimal places. When you press
CTRL-F, SpeedCalc displays the
question FORMAT: Left, Center, or
Right justify? in the command line.
Press L, C, or R to move the data to
the left, center, or right of the cell.
Next, you must select the number
of decimal places for that cell. The
default value is 2, but you may
change it to anything from 0-15. If
you choose zero decimal places,
any number in that cell is rounded
off to the nearest integer (whole
number). If you choose 15, a num-
ber in that cell is not rounded off at
all — SpeedCalc displays it exactiy as
you entered it or as it was calculat-
ed from a formula.
Width (CTRL-W). The width com-
mand changes the v^ndth of an en-
tire column of cells. Move the
cursor to any cell in the desired
column, then press CTRL-W. When
SpeedCalc displays the prompt
Width: you should respond with a
number from 4-36. The entire
screen is redrawn to accommodate
the new format, and may look very
different depending on what value
you chose. For instance, if you in-
crease a column's width, the right-
most column of the former display
may disappear: SpeedCalc only dis-
plays as many complete columns as
it can fit on the screen. If you de-
crease the width of a column, you
may see asterisks where numbers
used to be (indicating the cell is
now too small to display the entire
number). To get rid of the asterisks,
expand the column as necessary.
Global Formal (SHIFT-CTRL-F).
This is the same as the ordinary
format command, but operates
globally, changing every cell in the
sheet instead of just one. To alert
you to the difference, SpeedCalc
changes the color of the command
line to blue.
Global Width (SHIFT-CTRL-W).
This is a global version of the width
command. The command line turns
light green to signal the difference.
Every column in the sheet changes
to the designated v^dth.
Macro Editing
After typing in a large spreadsheet,
you may decide to make a major
change. You may want to add new
data somewhere in the middle, de-
lete a section, or move a group of
cells from one location to another.
SpeedCalc's macro (large-scale)
editing commands simplify such
operations, affecting an entire block
of cells at once. A block is simply a
group of cells connected in rectan-
gular fashion: You can define it as a
single cell, a row or column, or any
rectangular area within the spread-
sheet.
There are two ways in which
macro commands can work: verba-
tim or relative. To take a simple
example, say that cell AA2 contains
the formula =aal*5 and you want
to move its contents to cell AB2.
When this is done in verbatim
mode, AB2 contains an exact copy
of what wasin AA2( = aal*5). Note
that the cell name used in the for-
mula does not change: The formula
still refers to AAl. If you perform
the same operation in relative
mode, the cell name in the formula
is adjusted to fit the new location.
In this case, AB2 would contain the
formula =abl*5.
Copy (CTRL-C). The copy com-
mand copies a block of cells into a
different location without disturb-
ing the original cells. Place the cur-
sor on the upper-left comer of the
block you want to copy, then press
CTRL-C. SpeedCalc changes the
command line to purple and
prompts you to move the cursor to
the lower-right comer of the block
you want to copy. Once the cursor
is in place, press RETURN. Now
SpeedCalc prompts you to move the
cursor to the place where you want
to put the block: This is the upper-
left comer of the new position.
Once the cursor is there, press RE-
TURN again. The new data re-
places whatever was contained in
the designated cells. Note that if
you define an impossible block (for
instance, moving the cursor to the
upper-left of the original position,
rather than below and to the right),
SpeedCalc does not copy any data.
Move (CTRL-M). This command
works like a copy, but it fills the
122 Best of COMPUTE! and Gazette
Sensational Prices!
. . . On Our Most Popular Items!
from nueiegl^^ ...
THE 390 DISKEHE!
Are you paying too much tor diskettes? Try our first
quality, prime, SVt " diskettes (no rejects, no seconds)
at these fantastic sale prices and save, save, SAVE!
Disks are packaged in boxes ot 50; including diskettes
in sleeves, labels, and write-protect tabs.
Each diskette is certified to be 100% error free and
comes with a lifelime warranty (if you have a problem,
we'll replace Ihe diskette). All diskettes include hub rein-
forcement rings and write-protect notch.
All diskettes are double density and work in either
single or double density drives.
SS, DD Diskettes. Box of 50
32391
DS. DD Diskettes, Box of 50
32403
$19.50-39Cea.r
S24.50-4dCea.!
POWER and PROTECTION
FOR YOUR C-64!®
POW'R PAK 64
from MicroPal®
Pow'r Pak is a replacement power supply (1 .5 amp)
(or the Commodore 64' , .but that's not all! Pow'r
Pak also supplies two additional surge protected out-
lets (120V) for monitor, disk drive, or other peripher-
als. On/off switch. Fuse protection. Sturdy all-metal
casing is ventilated for heat dissipation. Full 1 year
warranty.
.34910 $49.95^
Unleash The Power of
CP/M'" On Your C128!
ONLY
$22.95
Includes Free CP/M Programs
• Word Processor • Disk Utilities " Communications
CP/M Kit includes a helpful guide to using CP/M such as:
stressing ttie unique features of Commodore's CP/M, using
your 1541 or 1571 drive with CP/M. and using your modem
to access electronic bulletin boards that offer free, down-
loadable software.
67392 2 Disks & Manual for C128 , . .$22.95
$159
FSD-2
DISK DRIVE
Reviewed by
RUN Magazine:
higherifian-average qualdy
Wlastef Ihana 1541 half the
sae you can test assured thai the
FSO-? will do a fine joD lor you "
Runs all 064 Commercial Software
full 1 Yeat Wartaniy gn^n
661(6 Disk Drive $159
*THE BEST PRICES*
• THE BEST SERVICE *
WHY SHOP
ANYWHERE ELSE?
THE FAMOUS SLIK STIK"
The Silk Silk'" has been a favoriie lor years and
lor good reason It's jusl the right comtimaiion ol
responsiveness itMi accuracy And itie pnce can'i
Itelieai'FroiiiSuncom 90 day warranty. Connects
directly lo Commodore Comnuters
aoas S69S
ONLY 56.95!
Space Saving Printer Stand
Ai \M 3 ciinier jiand priced loi homes and small offices' This great slanfl Irom
Suncom iselevaled so you can place your paper underneath Features heavy duly
v,clded steel wire const lucl ion and has a vinyl coaling lo reOuce noise and viDra
Icn Another plus the pnmer is held at an angle that tnakes it much easier
to see youi output as il is being orirrted Availattle in two widths 12' lor most
80 column printers, and IB" toi rrwsl 132 column pnnlErs
33232 12" Printer Stand . .(WasSMSS) ONLY t 6.SS
33246 18' Prmtsf Stand . .. .[Was $22.05) ONLY 112.95
Paper Tray
Evei nondercO Mhal to do wilh thepnntout that comes out of Ihe pnmer and tends
10 spill all over Ihe table and door' The Suncom Paper Tray attaches lo the rear ol
all Suncom stands and lEcerves Ihe prinled paper as >l comes oul ol the prnier Helos
10 neatly fold and stack It' Sug Retail Si4 95
42091 SI1.95
Super Deal On
Diskette Storage!
ONLY^
.$9.95,1
• Atwtiopping 100 disk (5V«') capacity.
• Loch anij keys for exlia security and easy carrying.
• Includes 8 index dividers wilti labels for organization of
riling and retrieval.
• Made of dtirable anb-slalic, high impact plastic.
• Attractive smoketl color lid.
Sug. Retail $19.95
,66826 NOW ONLY S9.95
FREE
DUST COVER & I
EVERYTHING BOOK
Discover the savings and easy shopping available
from TENEX Computet Express PLUS receive a
FREE dust cover tor your C64 or C128! Cover ts
anti-static, B-gauge virryl sewn to our exacting
slantJafds with reinlofced seams Gel to know our
great products, extensive selection and last serv-
ice with a FREE copy of our Everything fioo* tor
Commodore Compuling (S295 Shipping Cfiarge)
31627 C-64 Dud CovBr and CitalDg (G4F)
3S464 C-128 Duit Cover and CatalDg {G4F)
G5180 640 Duit Cover and Catalog (G4F|
The Rigtit Interface For All
Your Printing Needs!!
a soufMj irti^simenl Ity your
-nOl ^ CommoOo^" HUN. D«c '85
jf^ "j*!-" "^'^ nigfi.perloimance graohics
' i**^ parallel printer mierface imm DSi tor
C-&4 and VIC '20 emulates a (>]mmodar« pimier Comes wiiti
cables and user's manual
33565 S39.95
Super GrSphiX. Fealut«s SK buner 10 printing
modes. 3 mernal sciwn dumps and top mounted dc 4*ilrties
SuPBOrts superscnpl. suDscopt, underlining, tmW lace, and
a choice ol 9 character wifltns. Fmm !(etec
41769 SCALL
Super GraphiX Jr. Amwteconomicaiversionol
tt>e SiJper Gra()nii, leaturmg giaphKS, normal and cotrespon
{fence guaWy pnntmg (JompaW* with aP major prmeis (mm
Xeiec
V, 41774 SCALL
From Your Friends At
T€N€X
K
We gladly accept mail orders
P.O. Box 6578
South Bend. IN 46660
Questions? Call
219/259-7051
Ad
G4F
SHIPPING CHAF1GES
ORDER AMOUNT
less than S20,00
$20.00-$39.99
$40.ID0-S74.99
$75 00-5149,99
$150.00-8299.99
$300 &up
CHARGE
$3.75
4,75
5.75
6.75
7.75
e.75
NOTE Due 10 oublisriing lead-times, product Drices and soecidcalions are suh|«cl lo change wilhoul notice
NO EXTRA FEE FOR CHARGES
WE VERIFY CHARGE CARD
ADDRESSES
ORDER TOLL FREE
1-800-348-2778
INDIANA ORDER LINE 1-600-225-6838
original cells with blanks. Though
SpeedCalc has no express insert
command, you can use this com-
mand to make space for new data in
the middle of a spreadsheet. Simply
move everything below the inser-
tion point down as far as you need.
Relative Copy (SHIFT-CTRL-C).
This form of the copy command
adjusts the cell names used in for-
mulas within the copied block (see
explanation above).
Relative Move (SHIFT-CTRL-M).
This is the relative form of the move
command. Cell names in formulas
are adjusted to reflect the move.
Memory Management
SpeedCalc makes about lOK (over
10,000 characters) of memory
available for data. As noted earlier,
SpeedCalc lets you spread your data
out over a much larger number of
cells than you can actually fill with
data. The extra space is provided to
give you full control over the final
format of the spreadsheet — for ex-
ample, you could have a 15 X 150
spreadsheet — and to leave some el-
bow room for move and copy
operations.
Because memory is limited,
you should keep careful track of
how much is free while using the
program. Press CTRL-A to display
the amount of free memory. We
suggest limiting your spreadsheets
to 1 ,296 cells (equivalent to 36 rows
by 36 columns). If you have filled
nearly all of free memory, you may
have to break the spreadsheet into
two smaller sheets.
Although SpeedCalc checks the
amount of available memory, and
displays an error message if you
run out of memory, you should be
careful not to exhaust free memory.
Any move or copy operation in pro-
cess will be aborted if sufficient
memory is not available.
Disk Operations
SpeedCalc has four disk commands
which allow you to save a spread-
sheet to disk, load it, display the
disk directory, and send commands
to the disk drive. The directory
command is the simplest to use.
Press CTRL-4 (think of the dollar
sign): The screen clears and the di-
rectory is displayed. Press RETURN
to return to the normal screen. You
may pause the directory display
v^rith the space bar.
To save a spreadsheet to disk,
press the f8 function key (SHIFT-
f7). SpeedCalc prints SAVE: on the
command line, followed by an un-
derline cursor. Enter a valid Com-
modore filename and press
RETURN. (If you change your mind
and decide not to save anything,
press RETURN without typing a
filename.) The disk drive spins for a
few moments, then SpeedCalc
prints the drive status in the com-
mand line. The message 00,OK,00,
00 means there were no errors.
To load a saved file from disk,
press the f7 key. Again, SpeedCalc
prompts you to enter the filename
and displays the disk status when
the operation is complete.
You can perform other Com-
modore disk commands by press-
ing CTRL-T— press CTRL and the T
(up arrow) key together. SpeedCalc
prompts you to enter a disk com-
mand. If you press RETURN with-
out typing a command, SpeedCalc
displays the drive status and sends
no command. You need not enclose
the command in quotation marks or
type ,8 after it. For example, press
CTRL-T, then enter VO to validate a
disk. Consult your disk drive man-
ual for more information about
Commodore disk commands.
Printing
SpeedCalc lets you print data to
three different devices: to the screen
for previewing output, to a printer
for permanent documentation, or to
a disk file for integrating the data
with a SpeedScript document.
To preview your spreadsheet
on the screen, press SHIFT-CTRL-
P, then press S (screen output)
when prompted.
To print a hardcopy of the
spreadsheet, press CTRL-P. If your
printer is configured like most, this
should produce a satisfactory print-
out. This command sends output to
the printer as device number four
with a secondary address of seven
(uppercase/lowercase on most sys-
tems). Before using this command, you
must position the cursor below and to
the right of the block of cells you wish
to print. The upper-left comer of the
printout starts at cell AAl.
To send output to a printer
with a device number other than
four or a secondary address other
Tabie 1: SpeedCalc
Commands
Command
Action
CIKL-A
available memory
check
CTRL-B
blank (erase) cur-
rent cell
(JIRL-C
copy block
verbatim
CIRL-E
edit current cell
CTRL-F
change cell format
CIRL-G
goto selected cell
CIRL-M
move block
verbatim
CTRL-P
print file on printer
CTRL-T
change data type of
ceU
CIRL-W
change column
width
CIRL-X
exit SpeedCalc
CTRL-4
disk directory
CTRL-t
send disk
command
CLR/HOME
home cursor
SHIFT-CTRL-C
copy block relative
SHIl-1-CTRL-M
move block
relative
SHIFT-CTRL-P
print to screen.
disk, or printer
SHIFT-CIRL-W
change width of all
columns
SHIFT-CLR/HOME
erase entire sheet
fl
change border color
f3
change background
color
f5
change character
color
f7
load SpeedCalc file
fS
save SpeedCalc file
- recalculate sheet
than seven, enter SHIFT-CTRL-P,
then enter the device number and
secondary address when prompted.
During a printout, you can pause
the output by pressing SHIFT or
SHIFT LOCK: The screen border
turns white and printing ceases un-
til you release SHIFT. Press RUN/
STOP to abort printing.
You can also print SpeedCalc
data to a disk file for use in a Speed-
Script document. Select the D op-
tion after pressing CTRL-SHIFT-P,
then enter the filename you wish
the new file to have. The data is
saved as a disk file of that name.
Note that printing to disk creates a
different file than saving to disk:
You should save files which you
wish to reload into SpeedCalc, and
print files which you wish to con-
vert for SpeedScript. While you may
pause this operation with SHIFT as
with printer output, do not use
RUN/STOP to abort printing to disk.
This may create a "poison" (un-
closed) file which can safely be re-
moved only by validating the disk.
124 Best of COMPUTEI and Gazette
SpeedScript Integrator
SpeedCalc sends data to the printer
in simple, plain vanilla form. That
may be fine for personal use, but if
you're creating a document for oth-
ers to view, you may want special
features such as boldface, underlin-
ing, etc. Since SpeedScript already
offers a way to access these features
(and many more), no attempt has
been made to include them in
SpeedCalc. All that's needed is a
simple program to convert Speed-
Calc files into a form that Speed-
Script can load. Th^" you can edit
the file with SpeedScript as you
would any other document — in-
serting printer control codes, refor-
matting the text, merging it with
other text, and so on.
Here are the steps to follow to
convert a SpeedCalc file for Speed-
Script:
1. After creating a spreadsheet with
SpeedCalc, print it to disk as de-
scribed above.
2. Exit SpeedCalc, then load and run
the "SS Integrator". The program
prompts you to enter the name of the
SpeedCalc file you printed to disk.
Then it asks you to enter the name of
the SpeedScript file you want to cre-
ate (of course, this name should be
different from the first). The Integra-
tor then constructs a SpeedScript-loa-
dable disk file from the SpeedCalc
fUe.
3. After the Integrator is finished,
load and run SpeedScript, then load
the new SpeedScript file as you
would any SpeedScript document.
The data appears on the screen,
ready to be edited in any way you
wish. ®
Sequential File
Converter
For SpeedScript
SpeedScript becomes an even more
valuable word processor with this
program that converts sequential files
into SpeedScript format. It's written
in machine language for fast results.
For the Commodore 64.
I've been using the Commodore 64
version of SpeedScript, in one ver-
sion or another, since it was origi-
nally published in the January 1984
issue of COMPUTEI's Gazette. The
only drawback I've ever found is its
incompafibility with sequential files.
{SpeedScript uses program files.)
My database uses sequential
files, and many downloaded pro-
grams are in sequential file format.
And I have a few friends that use
other word processors that create
sequential files. In short, there are
many instances when I'd like to
load a sequential file into Speed-
Script.
Ron Cornell
Over the years, COMPUTE! and
COMPUTEI's Gazette have published
several BASIC programs designed
to convert sequential files into
SpeedScript files. And I've used
them, mostly with great success.
But BASIC is inherently slow; when
my database started creating se-
quential files more than 100 blocks
long, it became obvious that I
needed something faster.
"Sequential File Converter"
(SFC), the program accompanying
this article, is the solution. SFC ac-
comphshes the same thing as the
earlier BASIC conversion pro-
grams, but at the speed of machine
language.
To use SFC, you need only
load it and type RUN. YouTl be
prompted for the name of the
source file (the sequential file) and
for the name you'd like for the new
SpeedScript file. (Be sure to have the
correct disk in the drive when you
enter the destination name.)
If you load SFC and type LIST,
you'll find several lines of BASIC.
With one exception, you should
never change any of this code. The
machine language is attached to the
end of the BASIC program, and
changing any of the BASIC code
will almost certainly cause SFC to
crash. The exception is line 140. In
this line, SFC is adding ",s,r" to the
end of your source filename. The s
tells the disk drive to access a se-
quential file, and the r indicates that
it should be read. You can, in this
instance, change the s to another
letter without changing the length
of SFC and therefore without caus-
ing the machine language to crash.
You might wish to do this if you
want to change a file format other
than sequential into a SpeedScript
file. For example, a few word pro-
cessors store their text as USR files.
By changing that s to a u, you could
make SFC a USR converter able to
access USR files. 0
Best of COMPUTE! ond Gazette 125
ScriptRead
This versatile utility allows you to
read any SpeedScript /f/f (version 2.x
or 3.x) at high speed. Among its fea-
tures are automatic word-wrapping
and word counting. It also has a
scratch command to remove unwanted
files. A disk drive is required.
After a while, your SpeedScript
disks can become overcrowded
with files. Even with the most de-
scriptive of filenames, it's hard to
remember the contents of every
file. "ScriptRead" lets you read
through any number of SpeedScript
files, scratching any that are no
longer needed. And since Script-
Read works so fast, it can also help
you to locate a parhcular file —
without your having to waste time
Buck Chitdress
loading file after file into Speed-
Script.
Using The Program
To use the program, load it and
type RUN. The program asks what
you would like to do. Press M to see
a menu of your options.
You may change the screen
colors for easier viewing by press-
ing T to change the text color and B
to change the background color.
Press D to see the disk directory.
Press CTRL to slow the directory
listing. Press Q to quit the listing.
To read the contents of a file,
press R and then type the name of
the file. ScriptRead displays the file
on the screen. Since ScriptRead in-
cludes an automatic word-wrap
function, you'll never have to con-
tend with words that are split be-
tween two lines. Press CTRL to
slow the listing, any function key to
pause it, or Q to quit reading the
file. When the end of the file is
reached, the number of words in
the file is displayed.
PrcBS S to scratch a file. Script-
Read asks for the name of the file to
scratch. Type in the name of the file
you wish to erase, or press RE-
TURN if you don't wish to erase
any files.
If you encounter a disk error
(your disk drive light blinks on and
off), press E to read the error chan-
nel. See your disk drive manual for
an explanation of disk errors.
You may press RUN-STOP at
the "What would you like to do?"
prompt to exit ScriptRead. ©
W Ar^l^CTJl
[¥> 64 GOLD SOFTWARE
oL/A'Ulv&rlJ
IK SS.ooDISK
DSKir M*ME
o^j aa*
rail 11«0«=BC010B1FST-
coi« HSf R ancnf n
l^lVWLtiBF hv* IhwBnrbw^BD^C
^li'ISjK'CCBy — o«
COM MCaO TEBMM EilCHAHGE
C0>7 C6«CQIMl
oxa 9ESIflf..iFVfi-«r
CO" *4CSK»3
K:r-^;rrir^"ssir£i
COIB naSK.*7
COM tfHunw Pnontuu
hlUMsUma-^S'tii.; '■'" —
COM ti.aBLa
Ceei BEST Of EMS
COOS SFCUG UT».IT1iS
4#HHv-. II 1 1 'ni HI *P«f» 'KB
COO' PD mures
COM muas
C02I rjNPHOGHAWS
con cwciMoasK
DWDM thai* «w AcHv CN* >v tm
COM SBBIB
Sw > wn> W naTJC luiw PM' •»
Ohio WTIWIO**
Hill 1. »*^MT«*i^P'^fclO— Ek*
COIS PPC
COM MAMiU PROOMWS
COi? MU9CSO0HD
mil msKFiFimmrs
con pcn«s»i
C01J SfCOOKtNOBOOd
CO» (HCIUHFS *;
COM ESUBEiiS
C0I4 CWBOMWGIUDE
C031 PD ft
COTS UMfl n«01JP .3
COM PB fl
i-nv'iH
In CA C*l ^MOl OM-rMi ■ MDonal [KK
se«;5?^^^^^
^^^
1 26 Best of COMPUTE! and Gazette
Free-Form Filer
It's never been easier to store recipes,
magazine indexes, financial infor-
mation, or addresses. This free-form
database features power through sim-
plicity— an impressive tool for the 64.
A disk drive is required.
"Free-Form Filer" is like a deck of
index cards that you can easily add
to and edit. Advanced features let
you arrange the cards in the order
you want, hunt for key phrases, and
print a card to a printer. When you
have everything in the file just the
way you want it, simply press one
key to save the entire file to disk.
The program is written to be
intuitive, so it's very easy to learn.
Type information any way you
want — the program's automatic
centering will keep all your data
nice and neat.
Free-Form Filer stores infor-
mation by adding to itself. That is,
the information you enter into the
Free-Form Filer database becomes
part of the program, and the pro-
gram grows longer as you add more
information. For this reason, you
must use a separate copy of Free-Form
Filer for each database you create. For
example, if you want to set up an
address file, a recipe file, and a
household inventory, then each set
of information needs to be entered
into its own copy of the Free- Form
Filer program. Furthermore, because
the program always saves itself back
to disk with the same name, there
can be only one copy of the Free-Form
David Myles
Filer program on a disk.
You should save one copy of
the program with no data added as
a master copy, then save a working
copy on each disk on which you
wish to create a database. Because
the program is written to load the
same way a BASIC program does,
you can save additional copies sim-
ply by using the standard SAVE
command. Remember that all
copies must have the name FREE-
FORM FILER. It would be wise to
indicate on the disk's label what
type of information is contained in
the copy of Free-Form Filer on that
particular disk.
Making A Note
Load Free-Form Filer the way you
would load a BASIC program
(LOAD "FREE-FORM F1LER",8);
then type RUN. You'll see a menu
at the bottom of the screen:
Hunt Re-try Add Print Fwd Back
Change Dlete Tobuff Save Insbuff
This menu is always visible, so
you don't have to worry about
memorizing a set of commands. At
this point, Free-Form Filer asks you
to select from the menu. To start,
we want to add to the file, so press
A. You'll see a message which says
that a carriage return (RETURN)
stores the line, and that a RETURN
on a blank line ends data entry. To
see how it works, type these lines,
pressing RETURN after each:
FREE-FORM FILER
FEATURES AUTOMATIC CENTERING
Then, press RETURN on a
blank line. Free-Form Filer makes a
card with the information that you
entered. This card is the first in the
deck. (In Free-Form Filer, a card
corresponds to one screen of infor-
mation— up to 23 lines of text.)
Press A again to make another card.
Then type
TYPIGN ERRORS ARE EASY TO
CORRECT.
and press RETURN twice. Now
press B (Back) to view the first card.
It's impossible to back up beyond
this card. Press F to go forward.
You'll see the second card again. To
correct the misspelled word,
TYPIGN, press C (Change). Correct
the word by using the cursor keys
to move to the error, and then typ-
ing over the incorrect letters. When
you've made the change, be sure to
press RETURN before moving the
cursor off the screen line.
Each time you enter a line, it's
saved in the computer's memory.
The computer uses all these lines to
build the index card. It's easy to
enter duplicate lines — just press
RETURN several times on the same
line. Be sure not to press RETURN
on a blank line until you've pressed
RETURN on all the lines you want
to be saved on the card — this ap-
plies when you're entering data for
the first time and when you're edit-
ing it.
If, while entering information
on a card, you notice a mistake in a
previous line, do not cursor up and
Best of COMPUTE! and Gazette 127
correct the error. Instead, finish en-
tering the rest of the information for
the card, press RETURN on a blank
line to enter the card, and then use
the C option to go back and change
the mistake.
Because blank lines are used to
terminate data entry, it's impossible
to use them to separate text on the
screen. If you want to separate lines,
enter a shifted space (hold down
SHIFT while pressing the space bar)
as the only character on the line.
Alternatively, you can use a charac-
ter like a period or minus sign.
Free-Form Filer makes it easy
to arrange the order of the cards.
Press B until you back up to the first
card. Then press T (To buffer). The
first card is now being held in a
buffer. Now press F (Forward) to go
past the second card. Press I (Insert
buffer). The contents of the buffer
are now placed after the second
page. (Whenever you press I, the
contents of the buffer are stored in a
new card in front of the card cur-
rently on the screen.) Use B and F to
see that the first card has been
moved to the end.
You should be aware that any-
time you use the C option to change
a card, that card will be moved to
the end of the deck. If the order of
the cards is important to you, then
you'll have to follow the procedure
to move the card back to its desired
position after changes are made.
If you decide that you want to
throw out a card, press D (Delete).
Free-Form Filer will ask if you're
sure. If you press Y, the card will be
deleted.
Printing. Searching,
And Saving
Sooner or later, you'll probably
want a printout of your data. When
you do, just press P for a printed
version of the card currently dis-
played on your screen.
The most powerful feature of
Free-Form Filer is Hunt. When you
want to search for a word or phrase,
just press H. (For Hunt to work
properly, you should be positioned
at the first card in the deck before
pressing H.) The program will ask
for the phrase. Type it in, following
it with a RETURN. Free-Form Filer
will find and display the first card
with the phrase you indicated. To
search for the next occurrence,
press R (Retry).
When you've finished editing
your cards, press S to save them to
disk. Free-Form Filer scratches its
program file from disk and replaces
it with the program plus all the
notecards you have entered. The
next time you want to edit or read
your cards, just load Free-Form
Filer — all your cards will be there.
Be very careful that you don't
hit the RUN/STOP-RESTORE com-
bination while using Free-Form
Filer. If you do, all the changes made
since the program was loaded will
be lost when you run the program
again to restart it. The cards will still
appear on the screen if you flip
through the file, but the changes
will not be saved to disk. To reenter
the changes, you must move to the
first card in the file, then use the C
option and press RETURN on every
line of every card.
By saving Free-Form Filer to
several disks, you can keep several
different types of files, if you ever
want to clear out all the cards in a
deck to start a new file, just use D
(Delete) on each card. ©
frM* • WIC- • BX-W" . C-1W* • Phia«'> • C-li"* • HM- • PET" • CBM-
Why spend S150 on software
for a S200 computer?
Tha Intelligent Ooftwre Packagw On* disk, 25 butineM programs, t1S.95
The Intdligant Software Package is the one prtxJuct for your Commodore that
can take care of a!l your data procesBJnq needs.
CuetonMrs write: ' 'What a bargain! '
"I am amazed at all there is in these programs. ' '
"This lecter is to cell you that your package is abs(^utely the best I have found. "
"At last! Something to make my computer do reel work. "
There are no hidden fees for shipping or documentation, and no dubs to |Otn. The
package is not pubbc dwnain software, and is sold onty direct to customers by mail:
It supports all available pnnters. and wiH run on any Commodore computer (except
Amiga] with a minimum of 1 0k RAfvl. including the C-1 28 in C-1 28 mode.
What you get when you order the Package:
Oetabai*— A complete database men- DBStat, DBStatS— analyze D/B fdes.
ager. All fields completely user-defmabie
Can be used for any number of tasks, nbud-
tng accounting, checkbook and tax records,
niailrig Ists, nventory control, catatog marv
tenance, orasan electronic rolodex. A cus-
tomer wntes: "/ am espeaally impressed
with Database, and have used It to replace
ahdf-dozen other 'dXetjase'-typeprogrems
I had been using."
Word Proc«aw)r— A M-teaured menu-
(»Tven word processor, AJlOws full control
over margins, spacma. pagng, indentation,
aid juBOficaun. "Higfiy recornmended." —
MkJnite Software Gazette, "Provides good
basic features." — Cornpute's Gazette.
Cepycalc— An elecu^nic spreadsheet.
"Excellent program for budgeting, estimat-
ing, or any math-onented use . . . weH
worth the money. Highfy reammended. " —
Midnite Softvsiare Gazette.
RepertOwi — creates form letters, meing
lables, etc,
RaportMarge— creates statements
FivoceB.
Seeebell Stace— comptes team battng
statistjcs.
Index— indexes W/P's text fries.
WPCoiiwart— converts fries to other WP
formats,
DBMerge— facilitates reletional D/B
appllcatxvis.
Intelligent Software
Quality Software since 1 982
ASCII— converts text fites mto program
f)tes.
Chackboah — reconciles checkbook.
I nwantory— Maintains nventory records.
Paper Route— A/R for paper route.
Loan Anal yaia— computes finance terms.
pmts scheduies.
Braeketfon computes breekeven analysE.
Dapractat Ion— creates depreciation
schedules.
Labeler— creates labels.
File Coplar— copies sequential, program
fries.
Correlation —calculates statistical cor-
relatjon.
Also other Database and Word Processor
utriities.
To order, send name, address, and
S1 9,95 to address bekiw. Please speci-
fy reoiiar (1541/1571/2040/4040/
2031] disk, BO 50**. or cBBsetce (cas-
sette not Bvaiiable for Plus 4 or C-1 6).
Add £3 for COD orders : credit cards not
accepted. CaM. residents add 6%. No
personal checks from outside USA. A
samplinQ of program output is avariable
for £1 , Tear thie ed out and keep it
handyl
Box A Dept. U-2
San Anselmo. CA 94960
[41 5] 457-61 53
CASINO
# CRAPS
A computer progrim lor Ihs beginning or experienced shooter.
C 64/128 APPLE II IBM PC DISK
COMPUTER GAMBLING - "It's a MUST HAVE..."
for aspiring or experienced craps players"
Compieieiy simulates various casinos house rules and game vananons
Allows every belling oplion available on a casino craps labte
PIlCB • Buy • Hardway • Past • Don't Pass
Come • Don t Cams • Oddt • And Mucti Morel
As adverlisei] in Gambling Times' ^^^_ ^^- ^
II s the same as ihe real ihing' vSi «.«■«
Reviews Exceiieni' Highly Recommended' M^BH
The isi Complete Craps Prograin
Only $1195 plus S3.00 shipping and handling
Credil cards, 1-80a443-2751 exi 58 24 Hour Service
Check/Money Order !o Casino Software
505 Lewis. Rock Springs, WY 82901
aoToi
t6TO(
TurboDisk 64
Impossible as it seems, "TurboDisk
64" speeds up the 1541 disk drive's
loading time 300 percent or more — in
fact, the longer the program, the more
the gain. Also in this issue, you'll find
several programs which expand the
power of TurboDisk: "TurboDisk Re-
locator" and "Turbo Boot Maker."
If you've ever used a really fast disk
drive, you know that the Commo-
dore 1541 drive leaves something
to be desired — namely, speed.
True, it's much faster than a Datas-
sette, but it's still annoyingly slow
compared to other floppy disk
drives with high-speed parallel in-
terfaces. Now there's a solution:
"TurboDisk 64."
Once you start using Turbo-
Disk, you'll wonder how you got
along without it. TurboDisk turbo-
charges the loading process by a
factor of three times or more. In
fact, the longer the program, the
more improvement you'll see.
TurboDisk requires no modifi-
cations to your disk drive or com-
puter. It loads programs saved in
the usual manner; no special Turbo-
save is required. It works with most
BASIC and machine language pro-
grams, including the DOS Wedge.
It does not compromise reliability.
And you can switch it on or off at
any time by typing a single
command.
If you're still skeptical, give
TurboDisk a try — it delivers what it
promises.
To load TurboDisk, use the
command LOAD "TURBODISK
64",8,1. Next, type NEW and press
RETURN to reset important memo-
Don Lewis
ry pointers, then SYS 49152 to acti-
vate the program. The message
TURBODISK ACTIVATED signals
that you're ready for high-speed
loading.
Turbocharged LOADs
Once TurboDisk is activated, no
special commands are necessary.
Just type LOAD "filename",S or
LOAD" filename" ,S,1 as usual.
You'll be amazed at the difference.
One thing you'll notice imme-
diately is that the red light on the
disk drive doesn't come on at all
during a Turboload, Don't panic;
this is normal. It's also normal for
the 64's SCTeen to blank out as Turbo-
Disk works. When the program is
loaded, the screen reappears un-
altered.
You may occasionally find it
necessary to deactivate TurboDisk
and use a normal LOAD instead.
For example, 1541 disk drives are
prone to head-alignment problems,
so if you have a disk formatted on a
drive other than your own, you
may find that your drive has diffi-
culty loading programs from it.
Since the Turboload routine gives
up more easily on difficult LOADs,
you may have to switch to the more
forgiving standard LOAD to get the
program into your computer. You
can switch off TurboDisk at any
time without erasing it from memo-
ry by entering SYS 49155 (you
should see the message TURBO-
DISK DISABLED). To reactivate
TurboDisk, enter SYS 49152.
You'll also find it necessary to
use the SYS to reactivate TurboDisk
after pressing RUN/STOP-RE-
STORE, which effectively discon-
nects TurboDisk.
TurboDisk resides in the 4K
block of free memory starting at
address 49152 (hex $C000), so it's
completely safe from BASIC. How-
ever, many other machine language
programs or subroutines also use
this memory space and may over-
write TurboDisk. Don't attempt to
use TurboDisk to load any program
which occupies locations 49152-
50431 ($C000-$C4FF). If the pro-
gram you wish to Turboload uses
this area of memory, you can use
"TurboDisk Relocator," found else-
where in this issue,
TurboDisk speeds up LOADs,
but it can't speed up SAVEs or
VERIFYs. It also doesn't affect the
speed of disk file handling with
OPEN, PRINT#, GET#, and so
forth. It's not compatible with cer-
tain features of some programs,
such as loading text files with
SpeedScript, although you can use
TurboDisk to load SpeedScript in
the first place. It also may not work
with some commercial software.
How TurboDisk Works
The machine language for Turbo-
Disk is unusual in that only half of
it works within your computer —
the rest is actually executed within
the 1541 drive itself. Commodore
disk drives are intelligent units,
containing their own microproces-
sors, RAM, and ROM. This means
that they can be programmed for
special effects, like turboloading.
During the brief delay you no-
tice between the time you enter the
LOAD command with TurboDisk
and the time the drive starts spin-
ning, 444 bytes of machine lan-
guage are transferred from the
computer to the drive's RAM. In the
Best of COMPUTE! and Gazette 129
BUZZWORD — An aid to the best
source of good times.
As home computers come of age, more and
more games are being developed to meet
the diverse tastes at the family. With these
have a come a number of games reminiscent
of old precomputar favorites, such as the
tx>ard game Monopoly, the parlor game
charades, end skill and thinking games like
ScratDUeor Trivial Pursuit. The rjewer computer
games, instead of placing the computer at
center stage the way standard video-games
do, use It as an adjunct, an aid to the best
source of good times: the interaction of
family and friends.
Buzzword is a solid example of this hind of
game. It stimulates, it teaches, and it's fun.
Geared to those ages ten and up, it provides
challenging entertainment for the who/e family
Buzzword is a big hit with our family. It bills
itself as ranging "from a simple word guessing
game to a sophisticated strategy-filled
test of your knowledge", a game to appeal
to trivia buffs, word games aficionados, and
puzzle-solvers." It is. It does. The mental
exercise of Buzzword sha^ens wits, and
has enlarged our daughter's vocabulary,
and spelling skills.
Excerpts from review by
Robin & David Mrnnick
COMPUTES Gazette July 1987
SAVE $5.00 plus Free Shipping by
mentioning this advertisement.
To receive Buzzword for the Commodore 64,
send S34.95 (normally S39.95J lo:
The Buzzword Game Co., Inc.
5582 S. Zeno Court
Aurora. CO 60015
(303)693-4263
ViM S Maa«rcard Accsptsd.
If ncM cotnplstsly satisllad. you may felum ine gams
within 30 Oays hn a complets rslund.
LANDMARK vl.O
The Computer Reference Bible
Landmark v 1 .0 consists of the entire
King James version of the Bible
with the words of Christ highlighted
in color. Individual Verse References
(as found in a large Family Bible),
and a Concordance of over 3300 words
SUMMARY of LANDMARK features:
• 100% Midline Language for efficiency and fpeed
• View any Scripture with or without iu references
• Outline text in a pre-selcoed ctdor of youi choice
• Record peimanteni notea of your Bible Study
• Add to or create a new reference to any vcnc<()
■ Copy Sciipaiie lo add to your own files, notes or
rcfercnccB. Move Sciipairc aiDund for diieci nudy
• Searcdi any chapter, book, Tenamoit, or your own
fil«* for up to 1 2 {dimes at a time
• Pnat any put of the BiUe, lefeicnces, or your files
• Cieaie your own Penonil Bible containing all your
notes, commcnU, refatndng, and culling of text
• Unlimited lize of your Penonal B ible
• More feature* that can be described in thi* space!
LANDMARK vl.O for the Commodore 64 is SlM.95
CALL or WRFTE for our FREE BROCHUREI
P.A.V.Y. Sonwirc (formerly BIBLE BYTES)
P.O. Bojt 1584 Ballwin, MO 63022 (314) 527-4505
Pol^e FREEt <hi cmL US) MCA VISA ^t 1 ta* (tl M) MO i^teu
■dd5.TZ)«*4)HUji rmrwiiirrairtii^Mr Jlrm niiiMtuM rt«)-iin rlMi
DEALER INQUIRIES INVITED!
64, it is stored in locations 49664-
50107 ($C200-$C3BB). This re-
quired transfer of data before each
Turboload adds a certain amount of
overhead time, which explains why
TurboDisk gives less speed im-
provement for short programs.
TurboDisk operates by chang-
ing the ILOAD vector at locations
816-817 ($330-$331) to point to
itself, bypassing the normal LOAD
routines in ROM. TurboDisk first
checks to see whether a disk direc-
tory (LOAD "$",8) or a VERIFY
was requested. In either of these
cases, control is returned to the
ROM routines for normal process-
ing. If a program LOAD was re-
quested, the routine adds the
filename to the code for the disk
drive portion, then transfers that
data to the drive's memory.
The portion of TurboDisk in
the disk drive uses routines in the
drive's ROM to locate the desired
program and read it from the disk
sector by sector. To improve speed,
routines like the one that turns on
the red light are omitted, and only
the essential ones are used. The 256
bytes of data from each disk sector
are transferred two bits at time to a
256-byte buffer within the com-
puter. In the 64, this buffer is at
locations 50176-50431 ($C400-
$C4FF).
TurboDisk machine language
in the computer reads the incoming
data from the serial port's DATA
and CLK lines, instead of just the
DATA line as in normal serial data
transfers. Thus, TurboDisk tempo-
rarily converts your serial bus into a
two-bit parallel bus. When the en-
tire 256 bytes from a disk sector
have been transferred into the com-
puter's buffer, data from the buffer
is added to the program in memory
while the drive is reading the next
sector from the disk.
Just How Fast Is It?
Despite a few limitations, Turbo-
Disk is one of the most valuable
general -purpose utilities a disk user
can own. To discover exactly how
fast it is, we ran some tests. The
results, below, demonstrate how
TurboDisk yields the most im-
provement with medium to long
programs. (Results with different
disk drives may vary.)
Program Blocks Normal Turbo- Factor
LOAD load
21 sec 7 sec 3.0
13 sec 5 sec 2.6
31 sec 9 sec 3.4
7 sec 5 sec 1.4
18 sec 6 sec 3.0
Program 1 31
Program 2 17
Program 3 45
Program 4 8
Program 5 25
Program 6 122 75 sec 17 sec 4.4
Special Note To
1 28 Owners
For those 128 owners who use a
1541 disk drive: When you're in 64
mode, you can load and run Turbo-
Disk 64 as listed. For 128 mode
(and a 1541), see "TurboDisk 128"
elsewhere in this issue.
If you own a 1571 disk drive,
you don't need a Turbo program
while you're in 128 mode — the 128
and 1571 are capable of using the
fast serial transfer hardware built
into the disk drive and computer.
The 128/1571 combination is twice
as fast as TurboDisk at its best, and
about eight times faster than the
1541 alone. The 1571 slows down to
the 154rs sluggish pace when
you're in 64 mode, however. To
speed up the 1571/64 mode combi-
nation, you can use TurboDisk 64,
But first you must tell the 1571 to act
like a 1541 vAth the following line:
OPEN 15,8,15, "U0>MO": CLOSE 15
To go back to 1571 operations,
change the second zero to a one
("U0>M1"). However, you must
make a decision. You can use dou-
ble-sided disks while the 128 is in
64 mode and the drive is in 1571
mode, but not while using Turbo-
Disk 64. Or you can use TurboDisk
to speed up the 1571 drive in 1541
mode, but then you cannot use
both sides of a disk. It's up to you:
fast operations limited to one side
of the disk or slow loads and access
to both sides of a disk.
Note to readers outside North
America: High-speed TurboDisk
data transfers rely on precise
timing, so the program may fail
to operate on systems that use
the European PAL video system
instead of the North American
NTSC system. The reason is
rather technical — 64s with PAL
video use a slightly different
microprocessor clock frequency.
130 Best of COMPUTE! and Gazette
Commodore Product Potpourri
Hardware, Software & Firmware for your C-64, C-64C, C-128, AMIGA
BASIC PROGRAMMING AID
VICTREE is a BASIC programming aid cartridge
for me VIC-20 and C-64/C-64C compuler
VICTREE adds 42 extra commands for BASIC
programming ease and lull DOS control
VICTREE commands include CHAIN, EXECUTE,
MERGE, SEND, USE, CONCAT, DOPEN,
DCLOSE, RECORD, HEADER, COLLECT.
BACKUP, COPY, APPEND, OSAVE. DLOAD,
DIRECTORY, RENAME, SCRATCH, CATALOG,
INITIALIZE, AUTO. DELETE, RENUf^BER,
MERGE, LCOPY LMOVE, PRINT USING, FIND,
CHANGE, PAGE. HELP DUMP, and TRACE.
VICTREE 64 Cartridge, C-64/C-64C
VtCTREE 20 Cartridge, VIC-20
$49,95'
$29.95*
Prevent and preclude premature
pratfalls, by perplexed pro-
gramming postulants
BASIC PROGRAM COMPILER
BLITZ! is the fastest, easiest lo use, most
popular, BASIC program compiler available for
the Commodore 126, C-64, and C-64C. Your
BLITZ! compiled programs will run from 5 to
20 limes laster after you fiave BLITZ Ihem,
BLITZ! translates and reduces your BASIC
programs in to a much, much faster code.
BLITZ! 0-126, Disk $59.95*
BLITZ! C-64. Disk $49.95*
The periodically puzzling, pre-
carious, path to perspicacious
program perfection and prowess
ASSEMBLER CARTRIDGE
If your C-64 programming needs have
extended beyond BASIC, Skyles Electric
works now offers MIKRO, a machine
language assembler cartridge lor the
Commodore 64/64C. The MIKRO cartridge
contains everything you need for machine
language programming.
MIKRO Cartridge, C-64/C-64C . $49.95*
M.L. UTILITY TRIO
ZOOM is the perfect machine language
monitor lor the Commodore C-64/C-64C, with
23 editing commands and 11 disk commands.
ID allows Ifie full power of VICTREE to be
applied to editing and writing machine
language programs. STP is a ML Step-Wise
Executor that is on"? of the nicest ML
debuggers we have ever seen, lor the
Commodore 64. ZOOM-TD-STP the
tremendous Ino now in one package.
ZOOM-TD-STP, C-64/C-64C $29.95*
DISK ALIGNMENT KIT
1541/1571 Disk Alignment Kit is the dO-it
yourseller's deligfit. You lurnish a voltmeter
and 1 hours lime and the 1541/1571 Disk
Alignment Kit furnishes: 1 -Alignment
Reference Disk. 2-test and alignment program
disk, 3-video detector, 4-lnstruction manuals,
5-1541 Maintenance Guide. All for less than
the cost of a disk alignment.
1541/15410/1571 Disk Alignment
Kit $29.95'
2 fori MONITOR CABLE/C-128
The2 for 1 Monitor Cat>le allows ail composite
video monitors lo be used with the Commodore
128 in all modes of operation. Don't throw out your
present green or amber monitor, Ouy a
2tor1 MonllorCableforC-128 . $24.95*
®
Skyles
Electric
\db Works
1541 FLASH!
The new Skyles Electric Works 1541 FLASH!
loads programs and files to your Commodore
64/64C or Commodore 128 (64 mode) three
limes laster than an unenhanced Commodore
1541 disk drive. 1541 FLASH! saves programs
20 to 50 percent faster 1541 FLASHIformats
a diskette m 25 seconds, a real flash.
The 1541 FLASH! IS a permanent hardware
installation in your Commodore 64/64C and
Commodore 126 (64 mode) and 1541 disk
drive. No programs to load, no cartndge hassles.
We have special versions of Ihe 1541 FLASH!
forlheSX-64 and two 1541s.
In addition to its blinding speed ol program and
file loading, the 1541 FLASH! adds over 50
extra commands for the Commodore
64/64C/126 user. These include a built-in
DOSAVedge. Easy Editor, and FLASHIwlON!
machine language monitor.
1541 FLASH! C-64/C-64C& 1541 $69.95*
1541 FLASH! C-64/C-64C &
two1541s $109.95'
C-1 28 FLASH! C-1 28 & 1541 $79.95*
C-128 FLASHIC-126&
two 1541s $119.95*
SX-64 FLASH! SX-64 a 1541 $69.95*
SX-64 FLASH! SX-64&
two 1541 $109.95*
A powerful panoply of pertinent,
potent, peripheral products
QUICKSILVER 128
QUICKSILVER 128 our premier /EEE-488
Interlace tor the Commodore 126 is now in
stock and even belter than we had planned.
Quicksilver 126 offers an IEEE Interface for
Ihe Commodore 128 in Ihe C-128 mode (40 or
80 columns) and m the C-64 mode as well,
QUICKSILVER 128 will inter-connectyour
Commodore 128 to Commodore SFD 1001,
2031, 2040. 3040, 4040. 8050, 8250, 9060,
9090 Disk Drives, and 2022. 2023. 4022, 4023
and 8023 Printers.
QUICKSILVER 128 C-128 $119.95*
A priceless programmers pallett of
practical products and programs
IEEE Flash! 64
IEEE Flasti! 64 our premier IEEE-488
Interface for the Commodore 64 is now in
slock and even more transparent (program
compatible) than QUICKSILVER 64 IEEE
Flash! 64 will inler-connect your Commodore
64 10 Commodore SFD 1001, 2031, 2040,
3040. 4040, 8050, 8250, 9060, and 9090 Disk
Drives, and 2022, 2023. 4022, 4023, and 8023
Printers.
IEEE Flash! 64 C-64/C-64C $99,95*
2 + 1,4 + 1 CARTRIDGE
EXPANSION
Our 2 -r 1 Cartridge Expansion gives you 2
vertical and 1 horizontal fully switchable
cartridge ports. Our 4' 1 Cartridge Expansion
gives you 4 vertical and 1 horizontal fully
switchable cartridge ports.
2-^1 Cartridge Exp.
C-64/C-64CorC-12e $39.95*
4^1 Cartridge Exp,
C-64/C-64CorC-128 $69.95*
1571 FIX ROM
Relative File problems? "DEVICE NOT
PRESENT" errors? I/O error 5 when using
Superbase? Major problems when you have 2
or more files open? Painlully slow writing to the
second side ol the diskette? SAVE with replace
problems? Takes forever to recognize a "Flippy"
disk? II you have one or more of these problems
with your Commodore 1571 disk drive, don't
despair, don't trash your 1571, do get a:
1571 FIX ROM $24.95*
A powerful panoply of pertinent,
potent, peripheral products.
VIDEO DIGITIZER
The VIDEO-DIGITIZER module plugged into the
user port of your C-64/C-64C/C-1 28 allows you
to digitize video signals, ol whatever kind, show
them on the screen, store or process Ihem and
print them out. The digitizer can be connected lo
any standard: video camera (bSw or color).
VCR, or video disk player. The applications are
unlimited. An accompany diskette contains
programs to; Digitize a 256 by 256 pixel picture
in 4 shades ol gray, replace gray shades with
colors, save complete 256 by 256 pixel picture,
or 160 by 200 Koala format, printout on
Commodore 1515. 1525, 601. 802. 803, 1526.
Epson, StarMicronix, {and compatibles)
Canon PJ1080A. Okimate 20. and GP-700A
color pnnters.
All this is lor an amazingly low price.
VIDEO-DIGITIZER,
C-64/C-64C/C-128 $149.95*
BUSIDATA'"
BUSIDATA features up to 1000 records per 1541
data disk, 2000 records per 1571 data disk.
6000 per SFD- tOOO data disk, and over 20.000
records per SEW/JCT-1002 hard disk drive (see
page 5). Each record can contain up lo 254
characters and 20 lields ol up to 79 characters
per lield. BUSIDATA features up to 20 keys and
live levels ol sc rling on these on these keys.
Also featured Sre easy lo use menu driven data
selection and handling features, that include
RS-232 printer output,
BUSIDATA 64. C-64 Disk $39,95*
A major manufacturers magnificent
multitude, magnanimously mer-
chandised for minimal money.
FAMILY TREE
Truly a program for the whole family, your
wife's family, your parent's family, grandpa-
rent's family, and as many generations back
as you wish. FAMILY TREE is Ihe best
genealogy program for the C-64/C-64 Cor
C-128. Features unlimited genealogies. 4, 5, 6,
generation pedigrees, lamily record sheet and
much more.
FAMILYTREE, C-64/C-64C-1 541 $49.95*
FAMILY TREE,
C-64/C-64C/1541 (LDS) $49.95*
FAMILYTREE. C-128/1541/1S71 $49.95*
"Due to trade games being played by U.S. and Japan all prices are subject to change without notice. There
is an additional $4.50 U.S. and Canada, $15.00 Europe and Asia, shipping charge per order. Calilornia
residents add sates tax.
TO ORDER: Call 1 -800-227-9998 or 1 -415-965-1735 (CA) or write to:
For More Information: Send Stamped Self Addressed Envelope to;
231 -E South Whisman Road, Mountain View. CA 94041
Turbo BootMaker
This program makes "TurboDisk 64"
even more useful. It creates a boot
program that lets you load any pro-
gram at turbo speed — without using
TurboDisk. And after turboloading, it
automatically runs. For the Commo-
dore 64 and 1541 disk drive.
One of my favorite programs from
COMPUTE!'s GAZETTE is "Turbo-
Disk" for the Commodore 64. It
greatly speeds up the loading time
of the ordinarily slow 1541 disk
drive. To enhance the use of this
excellent utility, I wrote "Turbo
BootMaker/' which lets you auto-
boot your programs at turbo speed
without loading TurboDisk.
Making The Boot
After typing in Turbo BootMaker,
save a copy. To use it, load it and
type RUN. (If you're using Turbo-
Disk, be sure to disable it before you
run Turbo BootMaker.) The screen
prompts make the program very
easy to use. First, insert your disk
with a copy of TurboDisk. You're
asked to enter the TurboDisk file-
name {the name you used to save it
on your disk). Be sure to use an
appropriate version of TurboDisk.
The normal version works for turbo-
booting BASIC programs and some
machine language (ML) programs.
However, it cannot be used to turbo-
boot ML programs that load at its
own address, 49152 {$C000 hexa-
decimal). To turbo boot an ML pro-
gram that resides at 49152, you
must use a version of TurboDisk
that resides elsewhere in memory.
The "TurboDisk Relocator" pro-
gram elsewhere in this issue lets you
create versions of TurboDisk that
can work from other memory loca-
tions. After you enter the filename,
there will be a short delay as the
TurboDisk file is read into memory.
You're then asked to insert the
Bert Rozenberg
disk on which you wish to create
the turbobooter file. The next
prompt asks for the filename of the
program you want to turboboot. (If
you press RETURN only at this
prompt, the wildcard {*) character
will be used as the filename.) If a
copy of that program is not already
present on the disk, you'll be re-
minded to add a copy after you
finish creating the turbobooter.
Turbo BootMaker does not alter the
program to be turbobooted; in-
stead, it creates a file that automati-
cally loads TurboDisk, then
turboloads the specified program
and starts it running. A copy of the
program to be turbobooted must be
on the same disk as the turbobooter
file. That copy can always be load-
ed and run normally independently
of its associated turbobooter file.
You're asked if the program to
be turbobooted is BASIC or ML
(machine language). Press B or M. If
it's ML, you're asked for the start-
ing address, which can be entered
in either decimal or hexadecimal
(you must precede hex values with
a $). For example, if the command
to start the program is SYS 49152,
you can answer the starting address
prompt with either 49152 or $C000.
You should note that many of the
major machine language programs
published in the GAZETTE are de-
signed to be loaded and run as if
they were BASIC. Such programs
usually start at address 2049
($0801). For these programs you
should select B (BASIC), not M
(machine language), at this prompt.
If you select M and specify 2049 or
$0801 as the starting address, the
program will crash after loading. As
a rule, if you start a program with
RUN, select option B; if you start it
with a SYS, select option M.
Last, you're prompted to give a
filename to the new turbobooting
program (do not use the wildcard
convention). It would be wise to
use a filename which indicates that
this is a turbobooter file, and which
program it turboboots. For ex-
ample, you might use the name
SS.TBOOT for a file which turbo-
boots SpeedScript. After you enter
the filename, there will be another
short delay as the turbobooter file is
written to disk.
At this point, you've created a
boot program that will automatical-
ly load the specified program at
turbo speed every time you run it. It
also runs the program after it's been
loaded. You don't need to have
TurboDisk on the same disk — all
you have to do is LOAD "file-
name",8,l (be sure to include the ,1)
where filename is the name of the
turboboot file you created with the
procedure described above.
There are a few things you
should note about using the turbo-
booter file. First, the screen will ap-
pear to fill with garbage characters
for a second or two after you enter
the LOAD command. Don't panic;
this is normal, and the screen is
cleared when the turboload begins.
Second, even though the turbo-
booting process usually is a good
deal faster than a regular LOAD, it
isn't quite as fast as turboloading
directly with TurboDisk already in
memory. This is because the turbo-
booter must load the TurboDisk
machine language before it can
turboload the program. However,
you'll probably find that the
convenience of having your pro-
grams start automatically out-
weighs the slight speed decrease.
Finally, when turbobooting ma-
chine language programs like "Me-
taBASIC" that are designed to be
used in conjunction with BASIC,
you must remember to type NEW
and press RETURN after the turbo-
boot is finished so that important
memory pointers will be reset. ©
1 32 Best of COMPUTEI and Gazette
TurboDisk
Relocator
"TurboDisk 64" becomes a more ver-
satile and powerful utility when used
with this short program. Now you can
use TurboDisk 64 with most any ma-
chine language program. For the
Commodore 64.
"TurboDisk 64" is an excellent util-
ity program that radically speeds up
the 1541 for load operations. Since
TurboDisk may be activated in pro-
gram mode, it can be incorporated
quite easily with other programs.
The only drawback is its location in
memory— $C000 or 49152, quite a
popular spot for other machine lan-
guage programs. You may often
find yourself forced to use a normal
load because the program you want
to turboload is at that same address.
Because of the numerous
memory configurations available
on the 64, many programs are writ-
ten as modules. When the main pro-
gram is executed, it in turn loads in
other modules such as machine lan-
guage routines, hi-res screens, and
so on. All the modules required are
loaded in only once when the pro-
gram is first run. TurboDisk (in pro-
gram mode) is also needed only
once at the beginning of the module
loading. By being able to relocate
TurboDisk, we could put it in
BASIC RAM (or wherever we want)
Dino Bavaro
and not worry about it being over-
written, because once the modules
are loaded, we can deactivate it
since it's no longer needed. Care,
however, must be taken to relocate
TurboDisk to an area of memory
which does not conflict with the
modules being loaded.
User's Choice
The program accompanying this ar-
ticle, "Turbo Relocator," allows you
to select the area of memory for
TurboDisk. The DATA statements
in this program reflect the key mem-
ory locations that have to be altered
whenever TurboDisk is relocated to
a different area of memory.
When you run it, the program
prompts you for a new program
name to be assigned to the new
version. I find it helpful to append
the program's starting address to
the end of the program name. If you
were creating a TurboDisk version
to be executable at location 4096,
you could name it "TBDISK.4096".
This makes things easier, especially
if you have other versions of Turbo-
Disk that execute at different
locations.
The program prompts you to
enter the memory address of where
to assemble the new version of
TurboDisk. You should respond
with a decimal address on a full-
page boundary (that is, an even
multiple of 256). It's advisable not
to select memory areas under ROM
or other key memory pages such as
addresses below 2048.
Once the program knows the
address of where to locate the new
TurboDisk version and the new
name, it proceeds to read the origi-
nal version from disk and write a
new version modified for the speci-
fied starting address back to the
same disk. (Be sure the name you
use for the new version is not already
used by another file on the disk.)
To activate the new version,
use a SYS statement to the new
starting address you selected. For
example, if you created a version of
TurboDisk relocatable to address
32768, then you would start it with
SYS 32768 (in either program or
direct mode). To deactivate the new
version, SYS to the address three
bytes beyond the new starting ad-
dress. For the example of starting at
32768, you could use SYS 32768 +
3 (or just SYS 32771). To incorpo-
rate TurboDisk into one of your pro-
grams which loads modules, you
can use the following technique.
1 ON A GOTO 3,5,6
2 A = l:LOAD 'TBDISK.32768",8,1: REM
LOAD TBDISK VERSION 32768
3 SYS 32768: REM ACTIVATE
TURBODISK
4 A-2:LOAD "HI-RES SCREEN",8,1
5 A = 3:LOAD "ML-SORT",8,l
6 SYS 32768 + 3: REM DEACTIVATE
TURBODISK
7 REM REST OF PROGRAM <9
Best of COMPUTEI and Gazette 1 33
TurboDisk 128
Art you using a 1542 disk drive with
your Commodore 128? Here's a power-
ful utility that can reduce the time
you spend waiting for programs to
load by 300 percent or more.
If you've upgraded to a Commo-
dore 128 from a VIC-20 or 64 and
are still using a 1541 disk drive,
you're probably envious of those
fellow 128 owners whose 1571
drives can load programs in the
blink of an eye. Perhaps you've
used "TurboDisk 64" in 64 mode
and wished for an equivalent
speedup for 128 mode. Here's the
answer: "TurboDisk 128," a new
and improved version specifically
for the 128/1541 combination.
TurboDisk 128 works only in
128 mode; you'll still need to use
TurboDisk 64 in 64 mode. And the
program works only with a 1541; it
isn't useful in conjunction with a
1571. If you own a 1571 disk drive,
you don't need a Turbo program
while you're in 128 mode: The 128
and 1571 can use the fast serial
transfer hardware built into both
disk drive and computer, which is
as much as eight times faster than a
standard 1541 — about twice as fast
as TurboDisk.
But even if TurboDisk 128
doesn't permanently cure your de-
sire for a 1571, it will make your life
with the 1541 more bearable. In
Don Lewis
fact, once you start using Turbo-
Disk, you'll wonder how you got
along without it. TurboDisk turbo-
charges the loading process by a
factor of three times or more. In
fact, the longer the program, the
more improvement you'll see. Like
TurboDisk 64, the 128 version re-
quires no modifications to your disk
drive or computer. It loads pro-
grams saved in the usual manner;
no special Turbosave is required. It
works with most BASIC and ma-
chine language programs. It does
not compromise reliability. And
you can switch it on or off at any
time by typing a single command.
To load TurboDisk, use a com-
mand of the form BLOAD "TURBO-
DISK 128":SYS DEC("1300"). The
message C128 TURBODISK EN-
ABLED signals that you're ready
for high-speed loading.
Turbo LOADS
Once TurboDisk is activated, no
special commands are necessary.
Just type LOAD "filename",^ or
DLOAD "filename" or BLOAD"/i/e-
name" as usual. You'll be amazed at
the difference.
One thing you'll notice imme-
diately is that the red light on the
disk drive doesn't come on at all
during a turboload. Don't panic; this
is normal. It's also normal for the
40-column screen to blank while
TurboDisk works. When the pro-
gram is loaded, the screen reappears
unaltered.
You may occasionally find it
necessary to deactivate TurboDisk
and use a normal LOAD instead. For
example, 1541 disk drives are prone
to head alignment problems, so if
you have a disk formatted on a drive
other than your own, you may find
that your drive has difficulty loading
programs from it. You can switch off
TurboDisk at any time without eras-
ing it from memory by entering SYS
DEC("1303"), or the equivalent SYS
4867. You should see the message
C128 TURBODISK DISABLED. To
be safe, it would be wise to include
a BANK 15 before the SYS to en-
sure that the system is in its normal
BASIC configuration. To reactivate
TurboDisk, enter SYS DEC
("1300"), or the equivalent SYS
4864 (again, it would be wise to
precede this with a BANK 15). You
should see the message C128
TURBODISK ENABLED to indicate
that turboloading is now available.
You'll also find it necessary to
use the SYS to reactivate TurboDisk
after pressing RUN/STOP-RE-
STORE, which effectively discon-
nects TurboDisk.
TurboDisk resides in the cur-
rently unused area of free memory
starting at address 4864-5839 (hex
$1300-$16CF), so it's completely
safe from BASIC. However, this
memory area is rapidly becoming
popular with 128 machine lan-
guage programmers and you may
find other programs that use these
locations. Such programs cannot be
1 34 8est of COMPUTEi and Gazette
used with TurboDisk because load-
ing them will overwrite the Turbo-
Disk program. Turbodisk also uses
the block of memory at 3072-3327
($OCOO-$OCFF) as a buffer for the
data read from disk. This area is the
RS-232 input buffer, but since the
128 can't turboload and receive RS-
232 input simultaneously, this dual
usage should cause no conflict.
However, you should be aware that
some programmers use the RS-232
buffers for machine language rou-
tines. Such rouHnes cannot be used
with TurboDisk.
TurboDisk speeds up LOAD,
DLOAD, BLOAD, and the moni-
tor's L command, but it can't speed
up SAVE or VERIFY. It also doesn't
affect the speed of disk file han-
dling with PRINT#, GET#, and so
forth. It's not compatible with cer-
tain features of some programs and
may not work with some commer-
cial software.
How It Works
The machine language for Turbo-
Disk is unusual in that only half of
it works within your computer —
the rest is actually executed within
the 1541 drive itself. Commodore
disk drives are intelligent units,
containing their own microproces-
sors, RAM, and ROM. This means
that they can be programmed for
special effects, like turboloading.
During the brief delay you no-
tice between the time you enter the
load command and the time the
drive starts spinning, 464 bytes of
machine language are transferred
from the computer to the drive's
RAM. In the 128, this data is stored
in locations 5376-5839 ($1500-
$16CF). This required transfer
before each turboload adds a cer-
tain amount of overhead time,
which explains why TurboDisk
gives less speed improvement for
short programs.
The 128-resident portion of
TurboDisk operates by changing the
ILOAD vector at locations 816-817
($330-$331) to point to itself, by-
passing the normal LOAD routines
in ROM. TurboDisk first checks to
see whether a disk directory or a
verify operation was requested. In
either of these cases, control is re-
turned to the ROM routines for nor-
mal processing. If a program load
was requested, the routine adds the
filename to the code for the disk
drive portion, then transfers that
data to the drive's memory.
The portion of TurboDisk in
the disk drive uses routines in the
drive's ROM to locate the desired
program and read it from the disk
sector by sector. To improve speed,
routines like the one that turns on
the red light are omitted, and only
the essential ones are used. The 256
bytes of data from each disk sector
are sent to a 256-byte buffer within
the computer. As mentioned above,
this buffer is at locations 3072-3327
($0COO-$0CFF). TurboDisk sends
data over both the DATA and CLK
lines on the serial port, instead of
just the DATA line as in normal
serial data transfers. Thus, Turbo-
Disk temporarily converts your se-
rial bus into a two-bit parallel bus.
When the entire 256 bytes from a
disk sector have been transferred
into the computer's buffer, data
from the buffer is added to the pro-
gram in memory while the drive is
reading the next sector from the
disk.
The Longer, The Faster
Despite a few limitations, Turbo-
Disk is one of the most valuable
general-purpose utilities a disk user
can own. To discover exactly how
fast it is, we ran some tests. The
results, below, demonstrate how
TurboDisk yields the most im-
provement with medium to long
programs. (Results with different
disk drives may vary.)
Pro-am Blocks Normal Turboload Factor
LOAD (seconds)
(seconds)
Program 17 7 3 2.33
Program 2 16 13 4 3.25
Program 3 28 20 6 3.33
Program 4 55 40 10 4.00
Program 5 138 94 25 3.76
Note to readers outside North America:
High-speed TurboDisk data transfers
rely on precise timing, so the program
may fail to operate on systems that use
the European PAL video system instead
of the North American NTSC system.
The reason is rather technical — 128s
with PAL video use a slightly different
microprocessor clock frequency. 0
A Powerful Wordprocessor
for the Commodore 128
®
^^ Selected
^-: for the 1987
CES Software
i- -Showcase
Award.
From the author of Fontmaster II comes Fontmaster 128,
an enhanced version for the Commodore 128. This
powerful word processor with its many different print
styles (fonts), turns your dot matrix printer into a more
effectual tool. Term papers, newsletters, and foreign
languages are just a few of its many applications.
* Program disk with no protection - uses hardware key
* Supplement disk includes foreign language fonts
* 56 Fonts ready to use
* Font editor/creator included
* On screen Font preview
* 80 column only
* Supports more than 110 printers
This pakige will suun be avalibul with a spel czechr
Commodore 128 is a registeied iiademartc of Commodore Business Machines. Inc.
Inc. 2804 Arnold Rd. Salina. Ks, 67401 (913) 827-0685
Best of COMPUTEI and Gazette 135
TurboSave 128
This easy-to-use utility makes all
your saves at turbo speed — up to six
times faster than normal — on the
Commodore 128 with a 1571 disk
drive. Other useful features are also
included.
If you own a 128 and a 1571 disk
drive, you're probably still amazed
at the speed with which your pro-
grams load. Unfortunately, the
1571 is as slow as the 1541 when it
comes to saving programs. "Turbo-
Save 128" offers a solution. It al-
lows you to save 64K of memory to
a blank, formatted disk in 23 sec-
onds— six times the speed of a nor-
mal save. Here's a chart showing
the difference between TurboSave
and the standard SAVE routine:
TurboSave Commodore
SAVE
10 blocks 3'/i sec 9V2 sec
100 blocks 12 sec 60 sec
TurboSave is invisible to the
operating system and the user, so it
works equally well with all save
commands — BASIC'S SAVE,
DSAVE, and BSAVE, and the moni-
tor's 5 command. Except for its lack
of support for the bug-ridden Save-
with-Replace, TurboSave is com-
pletely compatible with
Commodore's standard SAVE. And
it will never create an unclosed
splat file, either.
TurboSave is simple to use.
Just load it with a statement like
this:
BOOT "TURBOS AVE",B1
Don't forget to add the extra ,81 at
the end of the command. This
causes the data to be loaded into
bank 1 of the 128's RAM. If you
omit the bank specification, the
program will load into bank 0 by
Michael Henry
default, where it will overwrite im-
portant system information such as
function-key definitions. As an al-
ternative, you can type in and save
this short program to act as a boot
program:
10 SCNCLR:PRINT"i DOWN I BOOTING
TURBOSAVE"
20 BOOT 'TURBOSAVE",Bl
Pressing RUN/STOP-RE-
STORE disables TurboSave. You
can also disable TurboSave with
the following command:
BANK 1:SYS DEC("FFA8")
To reactivate it, enter:
BANK 1:SYS 12*256
TurboSave assigns this command
to the SHIFT-RUN/STOP key
combination, so you can also reacti-
vate TurboSave simply by pressing
SHIFT-RUN/STOP.
TurboSave causes no conflicts
with BASIC, but machine language
programmers should be aware of
the memory locations used by the
program. It occupies locations
3072-5563 ($0C00-$15BB) in block
1 RAM (bank 1), and uses locations
1024-1791 ($0400-$06FF) in that
block for buffer storage. In block 0
RAM (bank 0), the program uses
locations 3072-3327 ($0C00-
$OCFF). This block is normally used
as the RS-232 input buffer; any pro-
grams that use this area won't work
with TurboSave. The following zero-
page locations are used temporarily
during a save operation:
6-8 ($06-$08)
100-101 ($64-$65)
106-110 ($6A-$6E)
174-175 ($AE-$AF)
193-194 ($C1-$C2)
TurboSave eliminates auto-
matic verifying to achieve its speed.
If you wish to verify that your pro-
gram was saved correctly, use the
VERIFY statement following the
SAVE. The VERIFY will occur as
quickly as the SAVE did, so you'll
still be way ahead of the normal
save routine.
Altering TurboSave
TurboSave is designed to be flexi-
ble. Although it normally saves
data in PRG files, you can change
this with the following:
BANK l:POKE DEC("D29"U
where x
values:
is one of the following the
Value
File type
129
130
131
132
sequential (SEQ)
program (PRG)
user (USR)
relative (REL)
Add 64 to these values if you wish
the file to be automatically locked
after it is saved. For example, a
value of 194 (130 + 64) would
cause TurboSave to create locked
program files. TurboSave normally
writes the starting address of the
data being saved as the first two
bytes of the file. This is standard
practice for Commodore program
files, but you may want to disable
this feature if you are creating an-
other file type. To prevent the load
address from being saved, use this
statement:
BANK l:POKE DEC("D47"),0
This is especially useful when cre-
ating text files, which need no load
address. However, remember that
program files can't be loaded nor-
mally unless they contain a starting
address. You can reenable the start-
ing address feature with
BANK IrPOKE DEC("D47"),1
136 Best ot COMPUTE! and Gazette
GET UP TO 200 RJN-FILLED
PROGRAMS EACH YEAR-
when you subsaibe now to COMPUTEfs Gazette
Subscribe to COMPUTEI's Gazette today
through this special introductory money-
saving offer, and you'll be getting a lot more
than just another computer magazine. That's
because each big issue of COMPUTE!'s
Gazette comes complete with up to 20 all-
new, action-packed programs.
Subscribe now and you can depend on
a steady supply of high quality, fun-filled
programs for your Commodore computer —
programs like Number Quest, Address File.
Treasure Hunt, Castle Dungeon, Vocab
Builder, SpeedScript and hundreds of other
educational, home finance and game pro-
grams the entire family can use all year long.
The superb programs you'll find in each
big issue are worth much, much more than the
low subscription price. But there's more to
COMPUTEI's Gazette than just exciting new
programs.
Month after month, COMPUTEI's
Gazette's superb articles deliver the latest
Inside word on everything from languages to
interfaces.. .programming to disk drives.
Whether you're a novice or an experi-
enced user, COMPUTEI's Gazette is the
magazine for you. So subscribe today. Return
the enclosed card or call 1-800-727-6937.
Do It now.
Alio kktKUvhi t«frt<My w#llr^ «?C^
t> tt^t* tfH-«t Mtt't *ir#Hl> IB tt %
o] [E m m OD m ^ m^^^]^ jy, ^
f^^"^
"« 1
ifi—
^ ,£2^ E=] -'-"
ACT NOW
H«ttw
*«■' -ir.«- ^^
SynMi
I s>]y^*y*^^,^_^
COMPUTE! Publications, Inc.®
One of the ABC Publishing Companies ^^^^
If attached order card is missing, write: COMPUTEI's Gazette RO. Box 10955, Des Moines, lA 50950
Exciting & New!
Commodore 64/128 Books
from COMPUTE!
COMNIODORe
64/128
POWER
BASIC
l<nt*W<-^ -•<-«'
COMPUTE! "s
THIRD BOOK
OF COMMODORE 64
GAMES
Get more power, education, and relaxation from your Commodore 64 or 128 with these
new books from COMPUTEI. And, as alwoys, the programs are thoroughly tested and easy
to enter using our special program entry system. (Dislts are available, too.)
COMPUTEI's Commodora 64/1 2S
Power BASIC
Edited
Collected in this one volume are more
than two dozen short BASIC cjrograms
from COMPUTErs Gazette's popular
monthly column. "Power BASIC," In-
cluded are utilities that add an 8K RAM
disk: read and write to disk sectors;
moke programs read joysticks more
quickly; and automatically generate line
numbers. There ore also programs such
as "Stop and Go." which creates a
pause button to temporarily halt a pro-
gram, and "Time Clock," which puts a
digital clock on your screen, Ttiere is a
companion disk available for $12.95
wtiicti includes all the programs from
thetxx>k (998BDSK)
$16.95 ISBN O87455-099-8
COMPUTEI'* More Machine Language
Games for the Commodore 64
Edited
Seven of the best machine language
games for the M hove been gathered
into one volume in this follow-up to the
popular COMPUTEI's Machine Language
Games for the Commodore 64. Selected
from recent issues of COfvlPUTE! and
COt^PUTEI's Gazette, the games range
from the frantic "Prisonball" to the
delightful "Biker Dave," This is more than
just a collection of exciting fast-action
games, though, because complete and
commented source code for each pro-
gram is included in the book. Machine
language programmers can see exactly
how each game is written and what de-
sign techniques are used, A disk is avail-
able for $12-95 which includes all the
programs in the book, including source
code. (947BDSK).
$16.95 ISBN 0-87455-094-7
COMPUTEI's Third Book of Commodore
64 Games
Edited
COMPUTE! Publications, the leading pub-
lisher of programs for the Commodore
64, has brought together another excit-
ing collection of nerve-tingling games
that will delight the whole family — from
preschoolers to teenage arcade fans to
those who enjoy gomes of logic. Clearly
written, with non-technical instructions,
this book contains hours of challenging
entertainment for beginning computer
fans OS well as experienced pro-
grammers. Ttiere is a companion disk
available for $12.95 that includes all the
programs in the book. (955BDSK),
$ 1 5.95 ISBN 0-8 7455-095-5
These books are now available at your local book or computer store.
You con also order directly from COI^PUTEI by calling toll free 800-346-6767
(in NY call 212-887-8525) or mailing your order to COIVIPUTEI Books, P.O. Box 5038,
F.D.R. Station, New York, NY 10150.
Customer Sen/ice hours are 10:00 a.m.-12:30 p.m. and 1:30 p.m.-3;00 p.m. EST Mon.-Frl.
Please include $2,00 postage and handling per book or disk, NC residents add 5 percent soles tax and NY residents
odd 8.25 percent soles fox. Please allow 4-6 weeks for delivery.
^^
TurboSave 64
William Voosen
Now you can save files three-to-five
times faster on the 1541 disk drive.
(Commodore 128 users see the follow-
ing article, "TurboSave 128," a ver-
sion that works with the 1571 disk
drive.)
"TurboSave 64/' is a machine lan-
guage program that makes saves
three to five times as fast by repro-
gramming the 1541 disk drive.
Here's a chart showing the speed
difference betu'een "TurboSave 64"
and the standard SAVE routine:
TurboSave
Standard
SAVE
8 blocks
3 sec
9 sec
128 blocks
17 sec
87 sec
Once TurboSave is activated,
all saves take place at high speed.
To load the utility, type LOAD-
"TURBOSAVE 64",8. To activate
TurboSave, just type RUN as you
would for a BASIC program. Press-
ing RUN/STOP-RESTORE dis-
ables TurboSave. Enter SYS 710 to
reenable it.
This utility maintains all the
error checking of the standard
SAVE routine except automatic ver-
ification, if you wish to verify the
save, use the VERIFY command. To
increase the speed of the save, the
screen is turned off briefly during
the high-speed save.
Compatibility
Some printer interfaces interfere
with TurboSave 64. If your printer
interface causes problems with Tur-
boSave, you may have to disconnect
it while using the program. Be sure
to test the program carefully before
using it with an important disk.
TurboSave 64 is compatible
with the DOS 5.1 wedge. The pro-
gram uses 27 bytes at locations
710-736 ($02C6-$02E0), but the
bulk of the program is stored in the
RAM under the BASIC ROM. Be-
cause TurboSave reprograms the
disk drive, a portion of the program
is also transferred into the disk
drive's internal memory. The trans-
fer of data to the drive RAM re-
quires about 1.5 seconds. That
overhead is the same for all saves,
so there is less speed improvement
for saving small programs than for
saving large ones. ©
BACKUP PROTECTED
SOFTWARE FAST.
From the team who brought you
Copy II for the Apple, the Macintosh
and the IBM comes a revolutionary
new copy program for the Commodore
64/128 computers.
• Copies many protected programs —
automatically (We update Copy tl
64/128 regularly to handle new
protections; you as a registered
owner may update at any time for
$15 plus $3 sib.)
• Copies even protected disks in
under 2 minutes (single drive).
• Copies even protected disks in
under 1 minute (dual drive).
• Maximum of four disk swaps on a
single drive.
• Includes fast loader, 12-second
format.
Requires a Commodore 64 or 128
computer with one or two 1541 or
1571 drives.
Call 503/244-5782, M - F, 8 - 5,
(West Coast time) with your ^ ^
in hand. Or send a check
for $39.95 U.S. plus $3 s/h, $8
overseas.
$39.95
Central Poini Software, Inc.
9700 S,W. Capitol Hwy, #100
Portland. OR 97219
CeritralRmU
Sofhvcm
Call tor a catalog of our full product line.
This product is pm/icSed lor the purpose ot enabling you to mate archival copies only.
Turbo Format
// you're interested in saving time,
and wear and tear, on your 1542 disk
drive, you'll put this program high on
your list of utilities. It formats a disk
in only 9-1/2 seconds — a super
speed-up from the usual minute and
20 seconds — and it eliminates head
knocking. Also, it's easy to use — just
answer a few prompts, and you're
seconds away from a formatted disk.
"Turbo Format" is a fast, easy-to-
use disk formatting program. It for-
mats a disk in only 9-1/2
seconds — the standard 1541 format
program requires one minute and
20 seconds. That's a speed increase
of over eight times. It's easy to use
because you don't have to remem-
ber the cryptic command line re-
quired by the 1541 to format a disk.
And you're prompted through each
step of the procedure so there's no
need to memorize anything.
To use Turbo Format, type
LOAD "Turbo Format", 8 and
RUN. There will be a short delay
(while most of the program is trans-
ferred to the memory in the disk
drive), and a title screen with the
first prompt will be displayed.
Three Easy Steps
You're first prompted to enter the
disk name (up to 16 characters).
Virtually any character may be used
in the name, but some may cause
undesirable side effects, so caution
is recommended whenever charac-
ters other than letters or numbers
are used.
The second prompt is for the
disk ID. This is the number used by
the disk drive primarily to deter-
mine when a disk has been
changed. Normally this number is
two characters long, but Turbo For-
Ross Ouwinga
mat will allow up to five characters.
More than five characters may be
typed in, but only the first five will
be used. Only the first two charac-
ters will actually be used by the
disk drive to identify the disk after
it has been formatted, but all five
will appear in the BAM (Block Allo-
cation Map).
Next, you'll be instructed to
insert the disk to be formatted. Be
sure that you do not leave your disk
with Turbo Formal in the disk drive.
Formatting the disk will erase ev-
erything. A recommended safe-
guard is to put a write-protect tab
on your disk immediately after you
have a working copy. Turbo Format
does check the write-protect tab,
and if one is present, the disk will
not be formatted. Also, an error
message will appear to notify you
that the disk is write protected.
Along with the prompt to in-
sert a disk is an abort option. Press
the fl key to abort. This causes the
program to start again at the begin-
ning, prompting you to re-enter the
disk name. This option allows you
to change your mind and enter a
new disk name or ID or correct any
spelling errors before formatting
the disk.
Two Kinds Of Formatting
The formatting process does not ac-
tually begin until you press the
space bar or RETURN. Note, how-
ever, that the space bar and RE-
TURN do not perform the same
function. If you press the space bar,
the disk will be formatted and all
data written to the disk will be
checked for errors. If an error oc-
curs, the formatting will stop and
the type of error will be displayed
on the screen. If you press RE-
TURN, the disk will be formatted as
quickly as possible without check-
ing for errors.
The reason for offering the two
options is to allow you to use the
program in a manner which most
closely suits your needs. If the disks
are verified, the procedure takes 1 7
seconds rather than 9-1/2 seconds.
Verifying provides more assurance
that the disk is formatted correctly.
The additional 7 or 8 seconds may
not make much difference to you.
On the other hand, if speed is im-
portant, you may choose not to veri-
fy your disks. Errors occur very
rarely and most are self-correcting,
provided the disk itself is not dam-
aged. Also, if you have a disk which
you know is faulty, but wish to for-
mat anyway, you must use the no-
verify option. I strongly recommend
using the verify feature if you're for-
matting the back side of a disk cerh-
fied only for single-side use, or If the
disk is well used, or if you use an
inexpensive, off-brand disk.
No Knock
After pressing the space bar or RE-
TURN to format, the process be-
gins. A feature that will be noticed
immediately is that there is no loud
knocking noise at the beginning of
the format routine. A single short
click is heard instead to indicate
that the routine is working correct-
ly. This feature is possible since
Turbo Format is loaded from a disk
at the start and the exact location of
the read/write head is saved in
memory in the disk drive. The pro-
gram is then able to calculate the
exact position of the first track with-
out the excessive knock. The stand-
ard format routine does not
necessarily know the position of
the read/write head; it therefore
assumes the worst-case condition
MO Best of COMPUTEi and Gazette
and tries to step the head down 45 tracks. If the head
reaches track one before it has stepped 45 times (which
is usually the case), it bangs the head against the stop
until the count of 45 is complete. It works, but it makes
an awful racket and, in some cases, eventually works
the disk drive out of alignment.
When the format process is complete, a message is
displayed and will indicate OK if there were no errors.
At this point you have the option of formatting another
disk or quitting. It's important that you press fl to quit.
Do not reset the computer by turning it off and back on.
The reason for this is that the format routine leaves the
read/write head on track 35 when it finishes. By using
fl to quit, the disk drive is sent an initialize command
and also a reset command to set everything back in
order. If you accidentally turn the computer off, you
should initialize the disk drive using the lO: command.
Failure to do so could cause erratic operation. If you
accidentally restarted when you intended to quit, it will
be necessary to press RETURN for the enter name and
ID prompts and press the space bar with no disk in the
disk drive. An error will be detected immediately and
you will again be given the prompt to quit by pressing fl.
Using Turbo Format does not mean your disks will
become less reliable. It's much faster because it elimi-
nates several very unnecessary and time-consuming
routines. Most of the time used to format a disk is spent
by a routine whose only function is to space the sectors
evenly around the disk. Turbo Format sets this space
the same for every sector on every track, but skips a
time-consuming calculation process used in the stand-
ard formatting process. It's amazing how much time is
saved by this one modification. To a lesser extent, time
is saved by reducing delays when stepping between
tracks and by eliminating unnecessary data-conversion
routines. A technical discussion of this is beyond the
scope of this article, but it should be noted that only
those procedures that do not affect reliability were
changed. Disks formatted with Turbo Format work just
as well as those formatted the standard way.
Intermediate or advanced machine language pro-
grammers might be interested to know that the data
recorded to the BAM of the disk is at locations $0B00
(2816) through $OBFF (3071). If you have a thorough
understanding of the BAM and its contents, you can
modify this area of the program to customize or per-
sonalize the BAM on your disks. Be aware, however,
that modifying the BAM may have undesirable side
effects and is not recommended for the beginner or
someone who knows no more than the basics of disk
drive operation.
For those of you with disk drives other than the
1541, Turbo Format will likely work if the drive claims
to be 100-percent compatible. Most of the program is
transferred to and operates in the disk drive and calls
on several routines which are part of the standard
program in the drive. If these routines are not at the
same addresses as in the 1541, the program will not
operate correctly. No damage will occur to your disk
drive if this should happen, but it may be necessary to
turn it off and on again to regain control. ®
FROM...
FOR HOME AND OFFICE
313-227-9401 FAX 313-227-1750
Mintmum Order of $25 00
9 1(7 1 n -Prsm Pac* 35 ot Escn Color S12.95
•Single Color 50/ oach 1 3.9S
"Also 8 1/2x11 For SMel Fed Printer^
• 25 SinQie Color EnveioOK S 1 .95
Red • Yellow • GrEEO • Hal Pmk • Blue '
2 -CLEAN EDGE SOFTONES''^"
9 1/2i11>2SolEacfiColor t10,95
•Single Color M'Paa . .. % 3.ZS
■A!5o8i/2«n For Shea Fed Pnnlers
• 25 Single Color Envelooes J 1.95
Yellow • Green • Lilac • Pink • Ivory • Blue
3 - CERTIFTCATES
9 1/2 » 1 1 • Clean Edoe Parcfimeni Pack Wiiti Gold
Metallic Seals
■ 25 Sheels and 25 Seals M.9S a p»eli
91/2i11-l003PartSc".
W^lIe. Canary Pink J5 95 a pack
S - DISKETTES
SS/DD. QS/DD 5-1.'4
■ 2 OisVene; ol UV- CoiO' 1 1 ca--
■ SD.skenesEsc-i Any 2 Colore '0 ^ac.
SI 5 95
$12 95
4 - POST CARDS
6 1 4 • Prsm Pack 50 ol EacTi ol 6 Colore
• Color (300 cards) U.9S t pick
■ Single Color lOO/pack . SZ.9S a pack
9 - PROFESSIONAL STATIONERY
9 1/2 X 1 1 ■ Clean Edge 20* Clas&c Lawl Colors
Wtiiie. 25% Cotiori F.twr
• 100 SoeelS ol Any Sirvgle Color JT.9S
■ Also B 1/5 111 lor Sti eel Fed Prmii!'',
10 -PROFESSIONAL ENVELOPES
• 1D Reouiaf - -■; Single Coiot Ciass.c ;.a.a
tG.9Sapack
• 50 Single Color Classic LaiO CorrtiOuOuS
SS.BS ■ pick
' CuSlom Prinliog Airailadle Minimum QuanWics
250 Eacfi Hem. Mosi Letieriieaa StocK AvaiiaCie
5 - FILE CARDS
S M 3 • Prism Pack 50 ot Eacn ol 6 Colors
■ Color 1300 cards) «.95 ■ pick
•Single Color 100/paDi U.75 a pack
6 • LABELS
3 1/2 « 15/16 • Prism Pack 120 ol Four Colors
• Plus W^tle and Cleat 720 Total S 7.95 1 pack
■ Single Color and White 500/pack S 3.95 1 pKk
• 5CC LaSiel^ Clear Polyesier JI2.95 a pack
11 -SOFTWARE
■ ueniTicaie Ma^er'" - 142.95
Includes Certilicale Pack
■ PnnlSnoB'"- 133.95 •
•Create a CalenOar'"- 129.95'
• Greeting Card Maker'" 132,95-
■ Wall Disney Card & ParT/ Shop™ 127 95'
* Includes Prism Pack 1 or 2
12 -PLAIN COMPUTER PAPER
2Dt Clean Edge
124 95 a carton
Custom Crafted Computer Specialty Products
Dealer Inquiries Invited
VISA, MasterCard and COD Add $3.00 Delivery Charge
Michigan Residents Add 4% Sales Tax
The Experts • PO Box 928 • Brighton. Ml 481 16
Unicopy
Single Disk Copying
For Tiie Commodore 64
Copying programs and sequential
files can sometimes be difficult.
There are backup programs, of
course; but they require that you
copy the whole disk, and some-
times you just want to copy one or
two programs. LOAD and SAVE
work for simple BASIC programs,
but not for anything complex. Well-
equipped users have two disk
drives and can use utilities that will
transfer from one to the other.
Dual disk units (notably the
Commodore 4040) don't quite do
the job for Commodore 64 owners.
There's a slight format difference
between 4040 and 1541 that makes
it undesirable to write on a disk
formatted on the other unit. Thus, a
4040-copied disk is not well-suited
for the 1541 if you wish to write
further material to the disk.
"Unicopy" will help to solve
these problems. It will take your
choice of programs or sequential
files from the disk and hold them in
memory. When you're finished, or
when memory is full, you can then
write the files to a new disk or to
cassette tape.
Buffering Files
As you scan the input disk, you'll
be offered programs and sequential
files for copying. You may tap the Y
or N key to signal: yes, you want to
copy this file; or no, you don't want
this one. More on this in a moment.
Before presenting you with the
filename, Unicopy looks at the size
of the file and the amount of memo-
ry space that is left. If the file is too
big to fit, the program won't offer it
to you; instead, it will signal MORE
and quit scanning the directory.
That way, you know that there is
more on the disk, but it can't be fit
Jim Butterfieid, Associote Editor
in this time. Unicopy could catch
the missing files on a subsequent
run. The program will not skip by
the big ones to look at smaller files
later in the directory, since it might
be important to you to keep a group
of files in the same order as they
were shown on the previous disk.
There's one exception to the
big files rule. If the file won't fit into
the whole memory buffer area,
there's no way to copy it with this
program. Unicopy will skip such
jumbo files.
How big is the buffer area? It
depends on how your Commodore
64 is configured. If it's a "clean"
system with no other resident pro-
grams, Unicopy will throw out
BASIC (temporarily) and use all the
memory it can get — about 48K, or
the equivalent of 192 disk blocks.
On the other hand, a program in
residence — monitor, DOS wedge,
interface package, or whatever —
must not be disturbed; in this case,
UNICOPY will become conserva-
tive and restrict itself to less than
36K or 144 disk blocks. The exact
amount of space will depend on the
other program's location and size.
You'll be asked "Any resident
programs?" at the start of Unicopy;
buffer size will be set accordingly.
One more thing: If you plan to
direct the output to cassette tape,
Unicopy must insure that no more
than 28K or 112 blocks are used.
Tape routines forbid writing a pro-
gram from above address 32766; so
Unicopy will trim accordingly. By
the way, this solves a subtle prob-
lem with cassette tape: Normally,
you can never save memory above
hex $7FFE; but Unicopy will move
the program down and save it suc-
cessfully from where it is held in
lower memory.
Initial Tasks And
First Questions
If you're copying to another disk,
be sure that the destination disk is
formatted before running Unicopy.
The disk may already be formatted
if you're just adding some new files;
but if not, remember to NEW it,
since Unicopy won't do the job for
you. You may copy files to more
than one disk; format them all as
necessary.
We've already mentioned ANY
RESIDENT PROGRAMS?; answer
Y or N.
OUTPUT TO TAPE OR DISK?
calls for touching the T or D key.
If you select tape, you'll be
asked WRITE END-OF-TAPE
MARK? If you respond with N,
you'll copy the programs to tape
and that's all. If you answer Y,
you'll copy the programs to tape
and then write a special block
called a "tape mark." Here's what
the tape mark does: At some later
time, if you're searching through
this tape for a particular file, the
tape mark will stop the search.
Thus, if you don't find the file
you want on tape, you won't go
running through the whole tape,
most of which is blank. An unsuc-
cessful search will terminate early,
thanks to the tape mark.
DISK INPUT PATTERN? al-
lows you to use pattern matching.
You're prompted with the asterisk;
if you want to see everything, just
press RETURN. But there are many
other combinations. AR* will pre-
sent only programs that begin with
AR, such as: AR, ARCHER, ARM,
or ARRRRGH. R?D? will present
you with such names as REDS,
RIDE, or R2D2, but not RIDDLE.
* = P will offer programs only. And
142 Best of COMPUTE! and Gazette
PLUTO will offer you only a file
called PLUTO.
When you are presented with
names from the directory, you may
tap Y or N to accept or reject the
files for copying. If you know that
you want to take or reject a se-
quence of files, you may hold down
the appropriate key. The RETURN
key acts to "lock in" the previous
key, so that pressing Y, RETURN
will accept everything and N, RE-
TURN will reject everything.
The Output
Eventually the questionnaire will
stop, and the computer will advise
READING FILES. The programs or
sequential files will be brought into
the buffer area. The programs
won't be in their usual place in
memory, but that doesn't matter;
we just want to copy them, not to
run them.
After the files are loaded, the
computer will say READY TO
WRITE FILES; PRESS ANY KEY.
Don't press a key — yet.
If you're writing to cassette
tape, place the tape in the drive. If
you have time and think it's neces-
sary, fast forward and rewind the
tape to even up the tension. Finally,
press PLAY and RECORD and
touch any key on the keyboard. The
tape will start to write: The screen
will go blank, of course.
If you're writing to another
disk, take the source disk out of the
drive and insert the destination
disk. (You did make sure that the
destination disk was preformatted,
didn't you?) Now touch any key on
the keyboard. As the files write to
the disk, you'll see their names
displayed.
If any errors are encountered
during input or output, you'll be
told about them.
When the copying job is done,
you'll be asked ANOTHER OUT-
PUT? If you want to write to anoth-
er tape or disk, put it Into the drive
and press Y for "yes." Otherwise,
press N and the job is done.
Other Types Of Files
Unicopy does not attempt to copy
USR or REL type files, nor does it
try to copy "direct" data. This type
of job should be done by the pro-
grams which use these types of
files. ©
Why Not? Computer Enterprises
P.O. BoK 171206
Arlington, Texas 76017
GSAPWC UUEiat +
Produce Labels with Pictures
Epson compatible or Commodore printers
Convert between Print Shop A and Print Haster
Maintain maifing list for mailing labels
$24.50
PCTURES PLUS
64 Pictures
12 Fonts
25 Borders
Print Shop Side A
(19.56
& B
PEHFECT PASS
72 Pictures
9 Fonts
5 Borders With Each Font
Print Shop Side A & B
»1?.S8
GOU" HAHNCAPPER
For Commodore M
Records for 368 Golfers
25B Game Dates
Handicap based on Par
Adjustable Formula
History by Player
History by Game
«29.5B
PROFOirTS
11 Fonts for
Fontmaster II or
Fontmaster 128
«14.58
QUAD STRATEGY
A Habit -Forming Game
Multiple Players or
Computer Opponent
«9.5B
Send Check or Money-Order to
Uhy Not? Computer Enterprises
(Prices Include ShippinQ/Handling)
Comodore is a tradenarfc of Conwdore Business Hachines
Print Shop is a tradenark of Broderbund Software
PrintHaster is a tradenark of Unison Uorld. Inc.
FontMaster is a tradenark of Xetex, Inc.
DUST COVERS
SATISFACTtOH OUARAHTBED
■tc CUSTOM MADE TO F<T
if HEAVY 33-01. VINYL ANTI-STATIC
if EXTENDS EOUIfMENT UFE
i( Chojca of Colon Light Ton or Brown
COMPUTEIS
C-64 Plui 4 C-64C
C-118
Oalatialte (C2N)
Amiga 1000
B.OO
13.00
5.00
13.00
IW/imiga »<ni. SUcMI 28.00
Ktyboo'd onlj^
Aton BOOXl. I30XE
Alori 520 ST
IBM PC XT
IBM 3051 Kayboord
(Dimcnlioni Raquii
for IBM Clon*l)
DISK DRIVES
C-1541, C-1S7I ,
Amigo 3'/i" D'Drv
Amiga 5M" D Drv
Induit GT. MSD SDI
MSD SO-2
Enhoncer 2000
FSO 1
Aio.i 1050
PRINTEaS
C.1525 MPS B01
C.T526 MPS 802
CMPS 803, C-1520
Panoionlc lOPO 91
Okidalo 120/192
Okimol* 10/20
EptonMX FX RX80
Epion LXBO/CIOOO
7,00
10.00
14.00
38.00
6.00
'•d
PIINIERS
Svikoiha SP-1000 13.00
Comrti 220 13.00
C'lloh aSIO 13.00
Juki 5510 13.00
Imagfwriisr 13.00
Epson JX 80 13.00
Epuin FX 85185 13.00
Okidalo 92 13.00
Cilricn MSP 10 13.00
C OPS 1101 16.00
Gammi 10 & Slar lO'i 13.00
Gemini IS&Stor I5'i 16.00
Alori 1027
13.00
B.OO
8.00
9.00
B.OO
10.00
8.00
8.00
800
MONITORS
Alori SC I224RGB 19.00
C-1703, BMC Cok" 16.00
C-1P02 Amiga 19,00
Amdsk 500-700 19.00
CM.141 (C-ie02) 19.00
C-19a2A Magnvic 40 19.00
NEC (Slaie Modal) 19.00
MdQnavot 80 RGB 19.00
Princeion <Sioie Modal 1 9 00
ThompionCM 36566 19.00
Toxan (Slola Model) 19.00
Sakoto SC-100 19.00
Zenilh (Slole Modal] 19.00
VIDEO RECORDERS 1 3 ,00
Slole Make & Model
DimeniKini requited
including clock cul-oul
10.00
13.00
8.00
13.00
13.00
B.OO
13.00
13.00
Order b| ifglinf MiKC. MOOEl imj COIOR CHOICE UH or BftOWN .ilh
thwiwmwt, order plus ll.H per iltn IHSOmi) shigpinq ind handling
Calif Rti Intlufc ('- ► lK4l In. IPO. J.OO'ittm. Foreiflr 3,00 ilem
SPECIAL COVERS WIU BE MADE TO YOUR
DIMENSIONS. SEND YOUR REQUIREMENTS
FOR OUR LOW PRICE QUOTES.
Crown Custom Covers
24621 PAIGE CIRCLE OEfT. A
LACUNA MILLS, CA 92653
(714)471-6362
COMMODORE
64
FINEST PUBLIC DOMAIN
PROGRAMS
• ON DISK- • ON DISK-
Hand picked and tested
MOST SI. 50
YOU pick the programs
that YOU want!!!
For your own list
and description
of these programs
JUST SEND A SASE TO:
JLH CO.
Dept. IG
Box 67021
Topeka, KS 66667
Commodore 64 is a trademark of
Commodore Electronics LTD.
Best of COMPUTEI and Gazette 143
Advertisers Index
&»ad«r S«rvtce Number/ Advertiter Page
102 Abby's Discount Software 117
103 Artificial Intelligence 41
104 Banano Software 42
105 Berkeley Softworks BC
106 Blockship Trading Co 126
107 Bone Frontier Company 49
108 Buchanan Software 78
109 The Buzzword Game Co., Inc 130
nOCAPPCO 82
1 1 1 Casino Software 128
1 1 2 Central Point Software 1 39
1 1 3 Centsible Software 41
1 14 Computer Direct 62-63
1 15 Computer Place 42
Crown Custom Covers 143
1 16 Digital Solutions Inc 2
1 1 7 Donovan Scientific Software 60
1 1 S Dune Systems 43
1 19 Emerald Components International IBC
120 The Experts 141
121 Eychaner Software Co 102
1 22 Free Spirit Software, Inc 82
1 23 iht Software 78
STAR FLEET I
^-^
The War Begins!
The smash hit is now available for the IBM PC, Commodore
64/128 , Atari , Apple I), Atari ST, Amiga, and Macintosh!
STAR FLEET I , The War Begim is the first in the FLEET series
of strategic space battle simulations What the experts say
~l (.all STAR FLCET I Ifie tvorWs mou yldbofdte s(<ir bdKk-l game It'inoljuil
d game. It % ddtntd nvoi a career " Admiral Jerry Poumelie, Byte
"STAR f Iff r I IS d truly laptivattrig gamv Ihe entiff manual ihoulJ (m-
•idupted ai an induitry iiandard Creative Computing
■■ Indnputably the most lomplex and irialleiiging luai baltleil iiratvyy game
ever madu a deiuie/ob all the May ' Computer Entertainment
• Includes 100 page manual, quick reference card
• 70 page training manual included (except for C6fl version)
• Requires 128k PC/PCir or compatible;Apple II + ,lle lie (64k)-
Atari(flSk);192k Tl PC.DOS 2* {S49 95); Atari ST; Amiga
(5 1 2k), ryiacintosh ($55 00); C64/1 28 ($39 95)
The ultimate computer trivia game.
K boards, 1-8 playtrrs, approximaluly
2000 quc'slKiiiii. Inc-ludus QUIZZER!
which allows yuu lo create yimr own
question diskL'ttes! Available (or (;64/l 28, Apple 11 1$*29.95);
Atari ST, Amiga ($35.00).
Vii't your reldiloi or (dtl 800-J1S-4^^S (in CA (dll HOO-Sb? 1 1 W) tor VISA S MC
O', iend the<h or MO \o Eicnronit Am. I' 0 Ho< /S)0, Sdn Mdieo. Cfl ^I-IOJ
AddiMorVh Write to IN tms 11 1 lot a free (Olor Lal^log'
BfDit Sk»llon
interitel
TM
P.O. Boa S'SIS
WclHlei.TX 7ISM
713-486-4163
Reader 5«rvlce Number/ Advertiser
Intelligent Software, Inc
Intelligent Software
124lnterstel
125 JLH Co
126 Ketek
127 Logical Design Works
12B Lyco
129 M.C.S
Micro R&D
130 NAPI
131 North Wind Computer Covers .
132 P.A.V.Y. Softwore
133 Precision Data Products
134Q-Link
135 Redmond Coble Corp
Second Source Engineering . .
134 Skyles Electric Works
1 37 Soft-Byte
138 The Soft Group
Tektonics Plus, Inc
139 Tenex Computer Express
140 Those Designers
141 Timeworks, Inc
142 Wedgwood Rentol
143 Why Not? Computer Enterprises
144 Xetec
Page
.19
128
144
143
.77
72-73
66-67
.. ,51
.. .58
.,.43
. ,130
...36
.. ..5
. ,126
. , .47
..131
.,.36
,.,.40
, . ..58
...123
. ... 40
, IFC-1
...60
, . ,143
. , .135
COMPUTE! Books' Commodore 64 & 128
Collection
COMPUTE! Books' Commodore 64 & 128
Programming Books
CGMPUTEI's Gazette Subscription
138
, 55
137
144 Best of COMPUTEI and Gazette
.6.'^
\<^
.e*
P vv»'»*»cO\»»e
DRIVE THE BEST
NOTHING DRIVES THE COMMODORE 64 OR 64C BETTER
THAN THE FSD-2 EXCELERATOR+ PLUS.
COMPATIBLE. RELIABLE. GUARANTEED.
The FSD-2 Excelerator+Plus Commodore compatible disk drive.
Faster, quieter and more reliable than the 1541 and 1541C.
Breakthrough Direct Drive technology. Guaranteed 100%
compatibility. It even enhances GEOS!
Full One-Year Warranty.
■-= — — == Emerald Components international
^^ ^ — = P.O. Box 1441/Eugene. OR 97440
S In Oregon: 683-1154/Fax: 503-345-5037
" Telex: 23-499-6100 EUG SECSVC
1-800-356-5178
"Commodore is a registered trademark of Commodore Business Machines. Inc.
WORK
WITHUSONA
PROFESSnNAL
Some people really like work-
ing on their machines. And then
there are some who prefer to do
their tinkering under the hood. For
those of you who can't wait to get
your hands greasy, we proudly
introduce geo Programmer. The
most sophisticated machine
language programming tool on
the market.
With geoProgrammer, you get
the same kind of technology we use
for developing our other products.
Which means you can write super-
charged software. Pump your own
programs. And assemble just about
any kind of application you can
imagine.
It reads and writes and
stomps on bugs.
The first three tools that
any serious programmer needs
are an assembler, a linker and
a debugger. So we've installed all
three, complete with sample GEOS
applications that teach you the latest
programming tricks in seconds.
geoAssembler not only reads
directly from geoWrite files, but
contains enough Pseudo Ops to
!<«« Bt ffti optioni . (K)qt [one itgtt [il! ■ jiitinD,om
^.1 . . , . ji. . , , I . . . . n , 14. . . . , . , , f^,
;•••■ SHQQII QdEDCS
ncMiiicniFik
uchh touiiiit
PM BiirAik
ProfSlwl: UtiV Kl. Gnflkf Tilk
LoriV iO,MuiI«u
)tr DoHiM
rtt
Bnuhlcon:
;n«i aMicst fM fio^
, >otir u ktn iiTKtwi
;kiuffatt(«rk«kirai
'Als.Kiwil;ilj|<-tot HiiKil. t L'K'.
LEVEL
allow all kinds
of conditional assem-
blies. It has all the state-of-the-art
features you'd expect, including
some you probably never thought
possible. For example, integrating
graphics is as simple as cutting and
pasting the image from geoPaint
directly into your program.
geoLinker ties your program
modules together, supporting
GEOS SEQ and VLIR applications
and desk accessories. You can even
use geoAssembler and geoLinker to
create non-GEOS applications.
geoDebugger allows your pro-
gram to be tested in memory with
full symbolic disassembly, along
with line assembly for patching
^k code in memory. It also allows
^ your code to be single-stepped or
top-stepped, with sub-routines fully
executed. It can stop a running pro-
gram with one key. or use up
to eight conditional break-
points. When your program
hits the breakpoint, it promi-
nently displays the error in an
overlay window, leaving the
applications screen intact.
Pro enough for you yet? Weil,
that's only a partial list of what
f you're in for.
^ If you understood all that,
read on.
Chances are that we lost a lot
of readers by now. But if you're still
with us, hang in there. You have the
makings of a real GEOS pro. All you
need now are the right tools.
And all of them come in this
one handy box.
So if you're serious about pro-
gramming.consider geoProgrammer.
After all, you've got nothing to lose
—except your amateur status.
To order call l-H00-443-(ni)<} ext. 234
geoProgrammer $69.95
iCiilifornia rfsidfiH.-; iidd 7'' s;ilfs tiix. )
$2. 51) US/$.S. f»<) Koroinn f<jr shipping and
handling. -Mlow six weeks for delivery.
GEOPROGRAMMER
n
Berkeley
Softworks
The brightest minds are wori<ing at Beri<eley.